我正在尝试将特定的xls文件合并到一个工作表中,但是我得到一个运行时错误1004说“工作表类的复制方法失败”我想这是因为我试图合并超过100个文件?
Sub GetSheets()
Path = "C:\Users\..."
Filename = Dir(Path & "*100.00mA.isd.xls")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
For Each Sheet In ActiveWorkbook.Sheets
**Sheet.Copy After:=ThisWorkbook.Sheets(1)**
Next Sheet
Workbooks(Filename).Close
Filename = Dir()
Loop
End Sub
答案 0 :(得分:2)
我偶然遇到了一个&#34;时间&#34; xl2003和ActiveWorkbook
的问题,也许这会导致您的问题。有时,在Excel完全打开新工作簿之前,VBA代码会转到ActiveWorkbook
行,因此ThisWorkbook
成为ActiveWorkbook
。解决此问题的方法是专门为新工作簿分配变量。
Sub GetSheets()
Dim wB As Workbook '<=New
Path = "C:\Users\..."
Filename = Dir(Path & "*100.00mA.isd.xls")
Do While Filename <> ""
Set wB = Workbooks.Open(Filename:=Path & Filename, ReadOnly:=True) '<=New
For Each Sheet In wB.Sheets '<=New
Sheet.Copy After:=ThisWorkbook.Sheets(1)
Next Sheet
wB.Close '<=New
Filename = Dir()
Loop
End Sub
答案 1 :(得分:0)
还有另一种情况,即出现所描述的运行时错误:
如果目标工作簿是Excel 97-2003文件(.xls),并且源工作簿是Excel 2007(或更高版本)文件(.xlsx)。
使用此组合时,sheet.copy
方法将导致相同的运行时错误。
您可以通过阅读ActiveWorkbook.FileFormat
属性来检查不同的工作簿格式。