将工作表从一个工作簿合并到另一个工作簿时出错

时间:2014-01-27 21:55:00

标签: vba merge

我需要编写一个宏,将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':工作表类的复制方法失败。
  3. 由于以下代码行而发生错误:     Sheet.Copy After:= ThisWorkbook.Sheets(1)

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

3 个答案:

答案 0 :(得分:1)

我收到了两个错误,因为主工作簿与ISOHODataCopy1.xls工作簿位于同一个文件夹中,因此它本质上试图复制自己。当我从文件夹中取出主工作簿时,宏工作得很好。

答案 1 :(得分:0)

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

Microsoft helps

答案 2 :(得分:0)

尝试替换

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