從工作簿中,我試圖打開另一個工作簿,複製該工作簿中的主工作表並重命名它。問題是,無論我嘗試什麼,似乎都不工作,當我複製主表。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':下標超出範圍。」
嘗試兩種 - 調用從工作簿中
裏面我創造了這個宏的「喬丹個人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
...
的錯誤出現就行「表(」主機「)的duplicateMaster模塊中的線複製後:=表(Sheets.Count)」。
錯誤是相同的「運行時錯誤'9':下標超出範圍。」
我該如何解決這個問題?
那麼只有兩個可能的失敗,名爲「主」的表不存在,索引「Worksheets.Count」不存在。後者似乎不太可能。將該語句分成兩行,使用debug.print或其他技術,並檢查您正在使用的失敗模式... –
例如,使用:'Debug.Print objWorkbook.Worksheets(「Master」)。Name'並參見如果這會引發錯誤。 –
另請嘗試使用'Open'而不是'Add':'Set objWorkbook = app.Workbooks.Open(...)' –