【问题标题】:Copy worksheets from a master workbook to active workbook将工作表从主工作簿复制到活动工作簿
【发布时间】:2020-06-04 22:18:31
【问题描述】:

以下代码有时有效,但并非总是有效。我看过类似的例子,但我需要以特定的方式工作(将所有工作表从 Master 复制到活动工作簿)。

我正在尝试将工作表从“主”工作簿(“MasterWorkbook.xlsm”电子表格)复制到我的活动工作簿(.xlsx 文件)中。我正在从我的活动工作簿运行宏。我也打开了“主”工作簿。

Sub CopySheetsFromMaster()
  Dim ToWorkbook As Workbook
  Set ToWorkbook = ActiveWorkbook
  Application.EnableEvents = False
  Workbooks("MasterWorkbook.xlsm").Worksheets.Copy After:=ToWorkbook.Sheets(ToWorkbook.Sheets.Count)
  Application.EnableEvents = True
End Sub

代码在第 5 行“Workbooks("MasterWorkbook.xlsm").Worksheets.Copy...”处停止运行。我收到以下错误消息“运行时错误'9':下标超出范围”。

【问题讨论】:

  • 你已经在开头定义了CopyToWorkbook,但是在第5行你使用了一个叫做ToWorkbook的东西... After:=ToWorkbook.Sheets(ToWorkbook.Sheets.Count)
  • 感谢您的接听,虽然我在此处复制和粘贴的内容有误,但这不是 Excel 中错误的来源。我现在已经修复了上面的代码 sn-p。

标签: excel vba


【解决方案1】:

看来您需要先打开工作簿。使用打开工作簿的Workbooks.Open 方法。

Sub CopySheetsFromMaster()
  Dim ToWorkbook As Workbook
  Set ToWorkbook = ActiveWorkbook
  Application.EnableEvents = False

  Application.Workbooks.Open("path_to_your_workbook").Worksheets.Copy After:=ToWorkbook.Sheets(ToWorkbook.Sheets.Count)

  Application.EnableEvents = True
End Sub

此外,检查您传递给Worksheet.Copy 方法的参数是有意义的。尝试删除After 参数。如果可以正常工作,那么你需要特别注意参数。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-11
    相关资源
    最近更新 更多