Tag: 工作表

使用Excel 2013 vba访问多个工作表

我有3个工作表,我有数据。主工作表有一个名为Lists ,包含combobox的各种列表工作表。 我试图使列表dynamic,即有能力添加条目,并让他们显示下一次用户转到用户窗体上的combobox。 我有这个代码,只要我在正确的工作簿的Lists表,这工作正常: ThisWorkbook.sheets("Lists").Range("I1", Range("I" & Rows.Count).End(xlUp)).Name = "DriverList" 但是,如果我在另一个工作表或另一个工作簿(都在同一个目录中),我得到一个 运行时错误#1004。 我已经尝试了以下两条线,但都没有成功: dim spath, sfile as string dim wbCharityBins as Workbook spath = "Z:\Charity Bins 2015 Test Data\" sfile = "Charity Bins 2015 – test.xlsm" Set wbCharityBins = Workbooks.(spath & sfile) wbCharityBins.sheets("lists")… etc 要么 Workbooks(spath & "Charity Bins 2015 – test.xlsm").sheets("Lists").Select 这两个尝试给: 下标超出范围,错误9 我有一个初始化例程,打开所有的工作簿之前,我遇到了上述问题,所以工作簿是开放的。 […]

将数据从一个(已closures)工作簿复制到另一个(已打开)工作簿

我已经成功地创build了一个macros,将一个(已closures)工作簿中的多个列的内容复制到另一个已经打开的工作簿。 问题是下面的代码在最后一行总是显示N / A为每列…你知道我的代码中的错误是什么? 我宁愿修复它,而不是添加删除N / A的另一行代码。 这里的代码(我也注意到,使用ActiveWorkbook或ThisWorkbook显着减慢了macros…closures自动计算,使其更快,但请让我知道,如果你有任何进一步的build议,以简化代码)。 Sub DataFromClosedFile() On Error GoTo ErrHandler Application.ScreenUpdating = False Application.Calculation = xlCalculationManual x是closures的源工作簿y是我将粘贴数据的当前活动工作簿 Dim x As Workbook Dim y As Workbook Dim CA_TotalRows As Integer Dim CA_Count As Integer 我认为下一行代码与“ThisWorkbook”显着减缓了一切 – 不知道为什么,但哦… Set y = ThisWorkbook 'Could also have used ActiveWorkbook Set x = Workbooks.Open("PATH", True, True) […]

确定在Excel VBA中插入或删除行/单元格的时间

我试图找出在Worksheet_Change事件中如何确定何时在Excel中使用VBA插入或删除行(或列),并在此处查看主题。 但是,在那里给出的build议答案并没有完全捕获在工作表上插入或删除一行时的所有实例,包括: 虽然它们捕获插入或删除整行行的实例,但它们不会捕获仅插入或删除一组单元格的实例,从而将单元格向下或向上移动。 当它们捕获在USEDRANGE中插入或删除的行的实例时,它们不会捕获您在所使用范围之外插入的实例(例如,在input数据的地方插入一行)。 鉴于上述说法,我寻找更多的select,找不到任何。 然后,我想出了自己的解决scheme,我在这里帮助别人。 我也希望同时得到有关任何缺陷或改进领域的反馈意见。

使用VBA在Excel工作表中创build表格

我有下面的代码将自动select一个范围。 有谁知道我可以如何添加代码来创build一个表到选定的范围? 谢谢! Sub DynamicRange() 'Best used when first column has value on last row and first row has a value in the last column Dim sht As Worksheet Dim LastRow As Long Dim LastColumn As Long Dim StartCell As Range Set sht = Worksheets("Sheet1") Set StartCell = Range("D9") 'Find Last Row and Column LastRow […]

Excel VBA:如何访问和控制“图纸select”对话框?

当我的VBA脚本找不到要使用哪个工作表时,它将打开一个Excel对话框:“select工作表”。 这是太棒了! 如何以编程方式控制并使用“图纸select”对话框? 我正在编写一个使用的代码 Application.FileDialog(msoFileDialogFilePicker) ..设置一个variables=一个选定的文件名,但我也试图设置一个variables到该文件中的某个工作表。 全部不用打开文件。 我想要的工作stream程是: 文件对话框打开 – >select一个Excel文件>确定 工作表对话框打开(如Excel的“select表”对话框) – >在该Excel文件中select一个工作表>确定 我已经通过Application.Dialog(xl …)的东西,但无法find正确的选项。 请帮忙! 谢谢。

如何获取工作簿范围的名称?

在Excel中,我定义了两个名字。 两者具有相同的名称,但是范围和价值不同。 一个范围是一张纸,另一个是工作簿。 我无法在单元格公式或VBA中检索书籍范围的名称。 在VBA中,以下内容返回表单作用域名称: ThisWorkbook.names("myName") 在一个单元格中,当我input以下内容: =book.xlsb!myName Excel将其重写为: Sheet1!myName 如何检索单元格公式和/或VBA中的工作簿范围名称?

C#生成的工作表是只读和locking的

我有一个打开和保存我的C#程序生成的Excel文件的问题。 每次手动进行一些更改并尝试保存excel文件时,popup消息会要求我保存该文件的副本,因为它是只读的。 这是好的,但烦人的。 我的excel文件是由我的C#程序生成的。 这是我的代码片段: /** * Save the matched data * */ public void saveMatch(List<String> saveB, List<String> saveG, Excel.Worksheet bellSheet, Excel.Worksheet GSMSheet, String fileurl, String mCode, String prioName,int sNumber = 0) { object misValue = System.Reflection.Missing.Value; Excel.Application newApp = new Excel.Application(); Excel.Workbook newWB = newApp.Workbooks.Add(misValue); Excel.Worksheet newWS = newWB.Worksheets.get_Item(1); String colName1 = bSheet.get_Range("A1").Cells.Value; String […]

将活动工作表中的所有表转换为范围

我正在做一个工具,将清理Excel文档,使他们在数据库友好的格式(定期导入到数据库)。 作为这个工具的一部分,我想将活动工作表中的所有表转换为范围(使用VBA)。 下面的脚本几乎是我想要的 – 它将所有表转换为工作簿中所有工作表的范围: Sub ConvertTablesToRange() Dim wks As Worksheet, objList As ListObject For Each wks In ActiveWorkbook.Worksheets For Each objList In wks.ListObjects objList.Unlist Next objList Next wks End Sub 而不是为所有的工作表做这个,我只想为活动工作表做 。 我怎样才能做到这一点?

更改单元格,如果其他单元格包含文本vba

我曾经有以下代码,它曾经工作,但由于某种原因,它不再起作用。 Private Sub Worksheet_Change(ByVal Target As Range) Dim test As Range Dim KeyCells As Range Dim i As String Set KeyCells = Range("AF3:AF5000") test = Target.Rows.Count If Not Application.Intersect(KeyCells, Range(Target.Address)) Is Nothing Then For i = Target.Row To (Target.Row + (Target.Rows.Count – 1)) If Not ActiveSheet.Cells(i, 32) = "" Then ActiveSheet.Cells(i, 20).Value = "Closed" End […]

openpyxl – 遍历列和行以从表格中间获取数据

我正在阅读openpyxl的文档,我需要一些更具体的东西,我不确定是否有办法使用iter_rows或iter_cols。 在文档中,它说这样做来抓取行和列: for row in ws.iter_rows(min_row=1, max_col=3, max_row=2): for cell in row: print(cell) 要么 for col in ws.iter_cols(min_row=1, max_col=3, max_row=2): for cell in col: print(cell) 这样做会给我A1,B1,C1等或A1,A2,B1,B2,等等。 但有没有办法来操纵这个,所以你可以从工作表中的另一个点抓取数据? 例如,我试图抓取从F3到W3的单元格。 但我不确定有多less行,可能有5个,可能有10个。所以我需要抓住F4到W4等等,直到我到达最后一个可能是F10到W10什么的。 我明白iter_rows和iter_cols是如何工作的,但是我还没有find一种方法来操作它在其他地方开始,如果没有其他的值剩下来就结束了。 看来我将不得不定义max_rows到工作表中有多less行。 有没有办法让它检查最大数量的行本身? 我所遇到的最大的问题是如何遍历从表格中间开始的行,而不是开始。 它不必使用iter_rows或iter_cols,这只是我在文档中阅读最多的部分。 先谢谢你!