Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/flutter/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA代码,用于将多个工作表和多个文件中的第1行编译为预先定义的工作簿_Vba_Excel - Fatal编程技术网

VBA代码,用于将多个工作表和多个文件中的第1行编译为预先定义的工作簿

VBA代码,用于将多个工作表和多个文件中的第1行编译为预先定义的工作簿,vba,excel,Vba,Excel,我有大约15本工作手册,每本大约有5000张工作表,数据在单元格“A1”到“Z1”的数据中。我需要将所有这些表编译成一个名为“compiled”的文件 简单地说,在15个xlsm文件中,每张工作表有一行数据。所有这些行都需要编译成一张表 然而,挑战在于,15本工作簿中每张工作表的单元格“A1”都包含一个代码,例如“12345A”,“B1”有一些数据,“C1”有一些数据 某些图纸共享“A1”、“B1”、“C1”数据。因此,当从这些图纸复制数据时,VBA代码需要检查是否已经复制了包含此“A1”、“B

我有大约15本工作手册,每本大约有5000张工作表,数据在单元格“A1”到“Z1”的数据中。我需要将所有这些表编译成一个名为“compiled”的文件

简单地说,在15个xlsm文件中,每张工作表有一行数据。所有这些行都需要编译成一张表

然而,挑战在于,15本工作簿中每张工作表的单元格“A1”都包含一个代码,例如“12345A”,“B1”有一些数据,“C1”有一些数据

某些图纸共享“A1”、“B1”、“C1”数据。因此,当从这些图纸复制数据时,VBA代码需要检查是否已经复制了包含此“A1”、“B1”、“C1”数据的行,并仅将该特定行下方的“D1”复制到“AB1”

样本表

样本汇编

玩得开心:p

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