VBA代码,用于将多个工作表和多个文件中的第1行编译为预先定义的工作簿
我有大约15本工作手册,每本大约有5000张工作表,数据在单元格“A1”到“Z1”的数据中。我需要将所有这些表编译成一个名为“compiled”的文件 简单地说,在15个xlsm文件中,每张工作表有一行数据。所有这些行都需要编译成一张表 然而,挑战在于,15本工作簿中每张工作表的单元格“A1”都包含一个代码,例如“12345A”,“B1”有一些数据,“C1”有一些数据 某些图纸共享“A1”、“B1”、“C1”数据。因此,当从这些图纸复制数据时,VBA代码需要检查是否已经复制了包含此“A1”、“B1”、“C1”数据的行,并仅将该特定行下方的“D1”复制到“AB1” 样本表 样本汇编 玩得开心:pVBA代码,用于将多个工作表和多个文件中的第1行编译为预先定义的工作簿,vba,excel,Vba,Excel,我有大约15本工作手册,每本大约有5000张工作表,数据在单元格“A1”到“Z1”的数据中。我需要将所有这些表编译成一个名为“compiled”的文件 简单地说,在15个xlsm文件中,每张工作表有一行数据。所有这些行都需要编译成一张表 然而,挑战在于,15本工作簿中每张工作表的单元格“A1”都包含一个代码,例如“12345A”,“B1”有一些数据,“C1”有一些数据 某些图纸共享“A1”、“B1”、“C1”数据。因此,当从这些图纸复制数据时,VBA代码需要检查是否已经复制了包含此“A1”、“B
Private Sub this()
Dim path As String, fileName as string
path = "c:\"
fileName = Dir(path & "*.xl??")
dim thisWS as worksheet, sheet as worksheet
set thisWS = ThisWorkbok.Sheets("Sheet1")
dim thatWB as workbook
dim arr(75000) as string
dim counter as long
counter = 0
Do While Len(fileName)>0
Set thatWB = WorkBooks.Open(path & fileName, True, true)
For Each sheet in thatWB.Sheets
arr(counter) = thatWB.sheet.Range("A1").Value
next sheet
counter = counter + 1
thatWB.close Flase
fileName = Dir()
Loop
thisWS.Range(thisWS.Cells(1,1), thisWS.Cells(coutner,1).Value2 = arr
End Sub
如果您展示了您试图运行的代码,并告诉我们哪些代码没有按预期运行,我们将能够提供帮助。老实说,这实际上很容易做到。由于所有的对象交互,但其简单enough@jonny.will您的问题是试图将字符串设置为工作簿变量。您需要先打开工作簿(使用字符串变量)然后将工作簿设置为当前。值得注意的是,您要做的事情的答案可以在SO.@jonny.will-good的Excel vba文档部分中找到。您现在可以尝试了,您可以使用我的其余代码:)非常感谢您的帮助,到目前为止,我已经用示例尽可能多地更新了我的问题图像和代码停止的地方,我希望它有帮助
Private Sub this()
Dim path As String, fileName as string
path = "c:\"
fileName = Dir(path & "*.xl??")
dim thisWS as worksheet, sheet as worksheet
set thisWS = ThisWorkbok.Sheets("Sheet1")
dim thatWB as workbook
dim arr(75000) as string
dim counter as long
counter = 0
Do While Len(fileName)>0
Set thatWB = WorkBooks.Open(path & fileName, True, true)
For Each sheet in thatWB.Sheets
arr(counter) = thatWB.sheet.Range("A1").Value
next sheet
counter = counter + 1
thatWB.close Flase
fileName = Dir()
Loop
thisWS.Range(thisWS.Cells(1,1), thisWS.Cells(coutner,1).Value2 = arr
End Sub