Excel VBA - 无法在另一个工作簿中复制工作表

Excel VBA - Unable to duplicate worksheet in another workbook

我试图从一个工作簿中打开另一个工作簿,复制该工作簿中的母版sheet 并重命名。问题是无论我尝试什么,当我复制母版 sheet 时似乎都不起作用。

尝试一 - 使用复制方法。

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

我已经标记了出错的行。错误是 "Run-time error '9': Subscript out of range."

尝试二 - 从工作簿调用宏

我在 "Jordan Individual 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 
...

错误出现在行"Sheets("Master").Copy After:=Sheets(Sheets.Count)".

的duplicateMaster模块中

错误一样"Run-time error '9': Subscript out of range."

我该如何解决这个问题?

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

此处 Worksheets.count 将引用活动工作簿,但 不在您创建的 Excel 的新实例中 。在您的代码为 运行.

的实例中,它将改为引用活动工作簿

试试这个:

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

您不需要创建 Excel 的新实例来执行此操作,不这样做将防止此类容易被忽视的问题。