Array Copy上运行时错误9
接收运行时错误'9':下标超出范围
我正在尝试将当前date的所有工作表的副本(或基本上复制整个工作簿)作为新的工作簿(.xlsx文件types)。
码:
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
debugging强调这一点:
Sheets(Array("Assignment Counts", "Assignment Precentages", "Release Counts", "Release Percentages")).Copy _ Workbooks.Add(spPath & spFileName)
编辑:让我们尝试一些不同的东西。 用这个片段replace你的代码的适当部分
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)
使用不带目的地的复制将创build一个包含所选工作表的新工作簿。 一旦发生这种情况,我们只需保存工作簿,并input适当的名称和path
(原始版本不起作用,因为您需要指定工作表而不是工作簿。将原始代码中的Workbooks(spFileName).Worksheets(1)
Copy
命令也应该工作)
原帖:
Sheets(...).Copy
命令中的Workbooks.Add(spPath & spFileName)
。 您已经有一个名为spFileName(在macros中创build)引用的名称的打开工作簿。
如果要创build第二个工作簿,或者只是使用Workbooks(spFileName)
来引用已创build的工作簿,请select其他名称。 在同一个Excel实例中不能同时打开两个同名的工作簿