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的新实例来做到这一点,而不是这样做将防止这种容易被忽视的问题。