从工作簿中,我试图打开另一个工作簿,复制该工作簿中的主工作表并重命名它。问题在于,无论我尝试什么,在复制母版时似乎都无法工作。
尝试一次 - 使用复制方法。
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':下标超出范围。"
尝试二 - 从工作簿中调用宏
在#34;乔丹个人Stats.xlsm"工作簿我创建了这个宏。
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
...
错误出现在行#34;表格中的duplicateMaster模块的行上(" Master")。复制之后:=表格(Sheets.Count)"。
错误相同"运行时错误' 9':下标超出范围。"
我该如何解决这个问题?
答案 0 :(得分:4)
objWorkbook.Worksheets("Master").Copy _
After:=objWorkbook.Worksheets(Worksheets.count)
这里的Worksheets.count将引用活动工作簿,但不在您创建的新Excel实例中。它将引用代码运行的实例中的活动工作簿。
试试这个:
objWorkbook.Worksheets("Master").Copy _
After:=objWorkbook.Worksheets(objWorkbook.Worksheets.count)
您不需要创建新的Excel实例来执行此操作,但不这样做会阻止此类容易被忽视的问题。