首页 > 解决方案 > 将工作表复制到 ActiveWorkbook

问题描述

我正在尝试将两个工作表(均名为“可交付”)从两个工作簿整理到第三个工作簿。

文件名不断变化,因为所有三个工作簿都根据季度 (Q1/2/3/4) 命名。
我尝试通过索引号(分别为 2 和 3,因为“目标”工作簿将首先打开并且它是运行宏的位置)来引用“源”工作簿,并在使用 ActiveWorkbook 后用于 .copy .Sheets(分别为 1 和 2)。

接收

运行时错误“9”

该错误似乎与第一行代码无关。当我删除它时,第三行运行正常。

我试图通过按名称而不是索引来引用工作簿,并按索引而不是“可交付”来引用工作表来隔离问题。

Workbooks(2).Sheets("Deliverable").Copy After:=Application.ActiveWorkbook.Sheets(1)
ActiveSheet.Name = "Q3 2020"
'
Workbooks(3).Sheets("Deliverable").Copy After:=Application.ActiveWorkbook.Sheets(2)
ActiveSheet.Name = "Q2 2020"

标签: excelvba

解决方案


如果代码在其中运行,则可以使用ThisWorkbook,如果可以,最好避免使用ActiveWorkbook/ ActiveSheet

With ThisWorkbook
    Workbooks(2).Sheets("Deliverable").Copy After:=.WorkSheets(1)
    .WorkSheets(2).Name = "Q3 2020"

    Workbooks(3).Sheets("Deliverable").Copy After:=.WorkSheets(2)
    .WorkSheets(3).Name = "Q2 2020"
End With

推荐阅读