Excelmacros结合工作簿,运行时错误1004

我试图将特定的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 

我偶尔遇到了xl2003和ActiveWorkbook的“时间”问题,也许这是导致你的问题。 有时VBA代码会在Excel完全打开新工作簿之前进入ActiveWorkbook行,因此, ThisWorkbook将成为ActiveWorkbook 。 解决此问题的方法是专门为新工作簿分配一个variables。

 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 

还有另一种情况,所描述的运行时错误将会出现:

如果您的目标工作簿是Excel 97-2003文件(.xls),而您的源工作簿是Excel 2007(或更高版本)文件(.xlsx)。

有了这个组合, sheet.copy方法将导致相同的运行时错误。

您可以通过阅读ActiveWorkbook.FileFormat属性来检查不同的工作簿格式。