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