Excel VBA – 无法在其他工作簿中复制工作表

从工作簿中,我试图打开另一个工作簿,复制该工作簿中的主工作表并重命名它。 问题是,无论我尝试它似乎并不工作,当我复制主表。

尝试一 – 使用复制方法。

Sub individualStats() 'Initialize Dim app As New Excel.Application app.Visible = False Dim objWorkbook As Excel.Workbook Set objWorkbook = app.Workbooks.Add("S:\MH\Stats\Jordan Individual Stats.xlsm") 'Test if Worksheet exists already Set wsTest = Nothing On Error Resume Next Set wsTest = objWorkbook.Worksheets("Test Worksheet") On Error GoTo 0 'If worksheet does not exist then duplicate Master and rename If wsTest Is Nothing Then objWorkbook.Worksheets("Master").Copy After:=objWorkbook.Worksheets(Worksheets.count) ' ^ This is the line I get the error on. ActiveSheet.Name = "Test Worksheet" End If 'Save and close workbook. app.DisplayAlerts = False objWorkbook.SaveAs Filename:="S:\MH\Stats\Jordan Individual Stats.xlsm", FileFormat:=xlOpenXMLWorkbookMacroEnabled objWorkbook.Close SaveChanges:=False app.Quit Set app = Nothing app.DisplayAlerts = True End Sub 

我已经标记了我得到的错误。 错误是“运行时错误9”:下标超出范围“。

尝试二 – 从工作簿调用macros

在“Jordan Individual Stats.xlsm”工作簿里面,我创build了这个macros。

 Sub duplicateMaster() Sheets("Master").Copy After:=Sheets(Sheets.Count) ActiveSheet.Name = "Test Worksheet" End Sub 

如果我在该工作簿中运行它,这个子工作得很好。

但是当我尝试从原始工作簿调用此模块时,它不起作用。

 ... If wsTest Is Nothing Then Application.Run ("'S:\MH\Stats\Jordan Individual Stats.xlsm'!duplicateMaster") End If ... 

错误出现在“Sheets(”Master“)行上的duplicateMaster模块的行中。复制之后:= Sheets(Sheets.Count)”“。

错误是相同的“运行时错误'9':下标超出范围”。

我怎样才能解决这个问题?

 objWorkbook.Worksheets("Master").Copy _ After:=objWorkbook.Worksheets(Worksheets.count) 

这里Worksheets.count将引用活动工作簿,但不是在您创build的Excel的新实例中 。 它将改为在您的代码正在运行的实例中引用活动工作簿。

尝试这个:

 objWorkbook.Worksheets("Master").Copy _ After:=objWorkbook.Worksheets(objWorkbook.Worksheets.count) 

你不需要创build一个Excel的新实例来做到这一点,而不是这样做将防止这种容易被忽视的问题。