【问题标题】:Error when Merging worksheets from one workbook to another将工作表从一个工作簿合并到另一个工作簿时出错
【发布时间】:2014-02-18 23:31:36
【问题描述】:

我需要编写一个宏,将 ISOHODataCopy1.xls 工作簿中的所有工作表合并到 zmastertablestest1.xlsm 工作簿中。它们是 Source_and_Master_Data 文件夹中仅有的两个文件。我一直在使用这个代码:

Sub GetISOSheets()
Path = "C:\Users\turner\Desktop\Source_and_Master_Data\"
Filename = Dir(Path & "*.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

此 vba 代码成功地将工作表合并到主工作簿,但出现两个错误框。

  1. 找不到文件:'C:\Users\name\AppData\Local\Temp\VBF10tmp
  2. 运行时错误“1004”:工作表类的复制方法失败。

由于这行代码而发生错误: Sheet.Copy After:=ThisWorkbook.Sheets(1)

我希望能够同时运行这个宏和另一个宏,但是错误阻止了这一点。 **如何解决这些错误? **

【问题讨论】:

    标签: vba merge


    【解决方案1】:

    我收到这两个错误是因为主工作簿与 ISOHODataCopy1.xls 工作簿位于同一文件夹中,因此它本质上是在尝试复制自身。当我从文件夹中取出主工作簿时,宏运行良好。

    【讨论】:

      【解决方案2】:

      您知道您的源数据 excel 文件是否包含已定义的名称吗?下面的 MS 帮助可能会给你一个线索:

      Microsoft helps

      【讨论】:

        【解决方案3】:

        尝试替换

        For Each Sheet In ActiveWorkbook.Sheets
        Sheet.Copy After:=ThisWorkbook.Sheets(1)
        Next Sheet
        

        For Each thisSheet In ActiveWorkbook.Worksheets
        thisSheet.Copy After:=ThisWorkbook.Worksheets(1)
        Next thisSheet 
        

        【讨论】:

        • 更改代码后收到此错误:运行时错误“424”:需要对象。错误出现在这行代码:Worksheet.Copy After:=ThisWorkbook.Worksheets(1)。
        • 我的错,糟糕的复制粘贴技巧。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-06-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多