Excel宏组合工作簿,运行时错误1004

时间:2014-06-12 18:44:59

标签: excel vba excel-vba merge

我正在尝试将特定的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

2 个答案:

答案 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属性来检查不同的工作簿格式。

相关问题