阵列复制上的运行时错误9

时间:2015-10-22 19:00:57

标签: excel vba excel-vba

接收运行时错误'9':下标超出范围

我正在尝试将所有工作表的副本(或基本上复制整个工作簿)保存为具有今天日期的新工作簿(.xlsx文件类型)。

代码:

Sub Test()

Application.DisplayAlerts = False
Application.ScreenUpdating = False

spPath = "C:\Users\mchun\Documents\Reporting Projects\Report Automation\Pop Counts (Monthly Field Population Reports EXCEL)\"
spFileName = "AandR Field Counts_" & Format(Now(), "yyyy-mm-dd") & ".xlsx"

Workbooks.Add
ActiveWorkbook.SaveAs (spPath & spFileName)

ThisWorkbook.Activate
ActiveWorkbook.RefreshAll

Sheets(Array("Assignment Counts", "Assignment Percentages", "Release Counts", "Release Percentages")).Copy _
Workbooks.Add(spPath & spFileName)


ActiveWorkbook.SaveAs (spPath & spFileName)

ActiveWorkbook.CheckIn

Application.ScreenUpdating = True

End Sub

调试突出显示:

Sheets(Array("Assignment Counts", "Assignment Precentages", "Release Counts", "Release Percentages")).Copy _
Workbooks.Add(spPath & spFileName)

1 个答案:

答案 0 :(得分:0)

编辑:让我们尝试不同的东西。用此片段替换代码的相应部分

spFileName = "AandR Field Counts_" & Format(Now(), "yyyy-mm-dd") & ".xlsx"

ThisWorkbook.Activate
ActiveWorkbook.RefreshAll

Sheets(Array("Assignment Counts", "Assignment Percentages", "Release Counts", "Release Percentages")).Copy

ActiveWorkbook.SaveAs (spPath & spFileName)

在没有目的地的情况下使用Copy会创建包含所选工作表的新工作簿。一旦发生这种情况,我们只需使用适当的名称和路径保存工作簿

(原始版本无法正常工作,因为您需要指定工作表而不是工作簿。将Workbooks(spFileName).Worksheets(1)放在原始代码中的Copy命令中也应该有效。

原帖:

Workbooks.Add(spPath & spFileName)命令中有Sheets(...).Copy。您已经有一个打开的工作簿,其名称由spFileName引用(在宏的前面创建)。

如果要创建第二个工作簿,或者只使用Workbooks(spFileName)来引用已创建的工作簿,请选择其他名称。您无法在同一个Excel实例中同时打开两个同名的工作簿