接收运行时错误'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)
答案 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实例中同时打开两个同名的工作簿