Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.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 无法将多个Excel中的多个工作表的数据合并到所有单独工作表的同一标题中_Vba_Excel - Fatal编程技术网

Vba 无法将多个Excel中的多个工作表的数据合并到所有单独工作表的同一标题中

Vba 无法将多个Excel中的多个工作表的数据合并到所有单独工作表的同一标题中,vba,excel,Vba,Excel,我是VBA新手,在很多方面都了解我的需要,但也有一些问题 目标: 我有3张表格,如sheet1、sheet2和sheet3,用于所有文件(20张Excel表格),所有电子表格中都有相同的表格。现在我有了另一个名为Master的文件,我需要在其中合并所有工作表。不是在母版中的单页中,而是在母版中,我有3页(第1页、第2页和第3页),因为所有页的标题都是相同的 我面临的问题 下面的代码仅合并第一张称为sheet1的图纸,而不合并其他图纸sheet2和sheet3 对于每个打开的工作簿,您必须

我是VBA新手,在很多方面都了解我的需要,但也有一些问题

目标:


我有3张表格,如sheet1、sheet2和sheet3,用于所有文件(20张Excel表格),所有电子表格中都有相同的表格。现在我有了另一个名为Master的文件,我需要在其中合并所有工作表。不是在母版中的单页中,而是在母版中,我有3页(第1页、第2页和第3页),因为所有页的标题都是相同的


我面临的问题


下面的代码仅合并第一张称为sheet1的图纸,而不合并其他图纸sheet2和sheet3



对于每个打开的工作簿,您必须添加一个循环来遍历这三张工作表

试试这个(未测试)


对于每个打开的工作簿,您必须添加一个循环来遍历这三张工作表

试试这个(未测试)


获取运行时错误,“Object不支持此属性或Method”我真的不知道如何获取运行时错误的行号…请建议我在错误提示处单击“Debug”按钮,您将被带到有问题的行。这行是问题:。范围(“A2:IV”和.Cells(.Rows.Count,1)。End(xlUp)。Row).Copy Destination:=masterWb.Sheets(iSht).Cells(masterWb.Sheets(iSht).Rows.Count,1).End(xlUp)我认为有问题的行是带有工作表的
,这是一个输入错误,因为正确的对象名称应该是
工作表
。但更准确地说,它应该是
Sheets
,这是后续行中使用的相同对象。请参阅已编辑的回答Getting Runtime error,“Object不支持此属性或方法”我真的不知道如何获取运行时错误的行号…请建议我在错误提示处单击“Debug”按钮,您将看到有问题的行。这行是问题:。范围(“A2:IV”和.Cells(.Rows.Count,1)。结束(xlUp).Row).Copy Destination:=masterWb.Sheets(iSht).Cells(masterWb.Sheets(iSht).Rows.Count,1).End(xlUp)我认为有问题的行是带有工作表的
,这是一个输入错误,因为正确的对象名称应该是
工作表
。但更准确地说,它应该是
Sheets
,这是后续行中使用的相同对象。见编辑后的答案
 Sub simpleXlsMerger()
    Dim bookList As Workbook
    Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object
    Application.ScreenUpdating = False
    Set mergeObj = CreateObject("Scripting.FileSystemObject")
    Set dirObj = mergeObj.Getfolder("C:\Excel\Path")

    Set filesObj = dirObj.Files
    For Each everyObj In filesObj

    Set bookList = Workbooks.Open(everyObj)

    Range("A2:IV" & Range("A65536").End(xlUp).Row).Copy
    ThisWorkbook.Worksheets(1).Activate

    'Do not change the following column. It's not the same column as above
    Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
    Application.CutCopyMode = False
    bookList.Close
    Next
 End Sub
Option Explicit

Sub simpleXlsMerger()
    Dim bookList As Workbook
    Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object
    Dim iSht As Long
    Dim masterWb As Workbook

    Set masterWb = ThisWorkbook
    Application.ScreenUpdating = False
    Set mergeObj = CreateObject("Scripting.FileSystemObject")
    Set dirObj = mergeObj.Getfolder("C:\Excel\Path")
    Set filesObj = dirObj.Files
    For Each everyObj In filesObj
        With Workbooks.Open(everyObj) ' open and reference current workbook
            For iSht = 1 To 3 ' loop through sheets index from 1 to 3
                With .Sheets(iSht) ' reference referenced workbook sheet with current index
                    .Range("A2:IV" & .Cells(.Rows.Count, 1).End(xlUp).Row).Copy Destination:=masterWb.Sheets(iSht).Cells(masterWb.Sheets(iSht).Rows.Count, 1).End(xlUp)
                End With
            Next
            .Close
        End With
    Next
End Sub