首页 > 解决方案 > 使用 Word VBA 创建 Excel 工作表的副本

问题描述

对于已经打开的工作簿,我想创建一个工作表(“模板”)的副本,并用我在数组中的值重新命名它。当我调试代码时,当我执行该行时会创建副本,但我仍然收到错误 424:需要对象。

我已经尝试过 On Error Resume Next,但由于我已经在我的 sub 中使用了 On Error GoTo,所以它没有被读取。

Dim oXL As Excel.Application 'Requires loading "Microsoft Excel 16.0 Object Library" from Tools -> References
Dim oWB As Excel.Workbook

Set oXL = New Excel.Application
Set oWB = oXL.Workbooks.Open(FileName:=WorkbookToWorkOn) 'Opens Excel
oXL.Visible = True 'Shows Excel window while running code. Set to false after finished editing.

Dim ws As Worksheet
For i = LBound(seller_names) To UBound(seller_names)
    'On Error Resume Next 'Doesn't work
    Set ws = oXL.ActiveWorkbook.Sheets("Template").Copy(After:= _
             oXL.ActiveWorkbook.Sheets(oXL.ActiveWorkbook.Sheets.Count))
    ws.name = seller_names(i)
Next i

标签: excelvbams-word

解决方案


Sheets.Copy不返回对复制工作表的引用,因此您需要先复制工作表,然后获取对它的引用:

With oXL.ActiveWorkbook
    .Sheets("Template").Copy After:= .Sheets(.Sheets.Count)
    Set ws = .Sheets(.Sheets.Count)) '<< get the copy
    ws.name = seller_names(i)
End With

On Error Resume Next应该始终有效 - 但并不总是一个好的解决方案 - 除非您在 VBA 选项中启用了“中断所有错误”。


推荐阅读