简体   繁体   中英

Create Copy Of Excel Worksheet using Word VBA

With an already-opened workbook, I want to create a copy of a worksheet ("Template") and re-name it with the value I have in an array. When I debug the code the copy is created when I execute the line but I still get an error 424: object required.

I've tried On Error Resume Next but since I already used On Error GoTo in my sub it isn't read.

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

Sheets.Copy doesn't return a reference to the copied sheet, so you need to first copy the sheet, then get a reference to it:

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 should always work - but is not always a good solution - unless you have "Break on all errors" enabled in your VBA Options.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM