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实例中不能同时打开两个同名的工作簿