簡體   English   中英

第一次復制嘗試時,VBA中的“運行時錯誤1004:工作表類的復制方法失敗”

[英]“Runtime Error 1004: Copy method of worksheet class failed ” in VBA on first copy attempt

(提前抱歉我的英語不好:不是第一語言:))我正在編寫一個VBA Excel 2003例程,該例程在一個文件中運行50多個工作表,逐個復制工作表(就像臨時副本一樣)然后執行操作在刪除這些臨時副本並將其結果返回到工作表內容之前對它們進行操作。 更確切地說:代碼是從外部文件調用的,里面有一個(隱藏的)工作表。 當我打開文件時,它運行一個代碼在Excel中創建一個新的工具欄,當我按下工具欄上的一個按鈕時,我上面描述的代碼就會運行。

我知道不保存文件並執行許多和多個副本會觸發此錯誤,但現在它在第一次嘗試時觸發(我已經多次關閉並重新打開所有內容以確保我沒有保留未保存的狀態)。

這是觸發問題的代碼,我很抱歉格式不佳:

ActiveWorkbook.Worksheets("NAME OF THE FIRST WORKSHEET I WANT TO COPY").Copy ThisWorkbook.Worksheets("HiddenSheet")

免責聲明:工作表的名稱是通過ActiveWorkbook.Worksheets數組的For..Next循環找到的,但即使我自己對該名稱進行硬編碼,代碼也無法正常工作。

這是一個更大的代碼塊,更清楚:

Set sourceWorkbook = ActiveWorkbook
For index = 1 To sourceWorkbook.Worksheets.Count
    sourceWorkbook.Activate 'not sure if this is even needed
    Set currWorksheet = sourceWorkbook.Worksheets(index)
    currWorksheet.Copy ThisWorkbook.Worksheets("HiddenSheet")
Next index

結果現在始終如一:

運行時錯誤'1004'工作表類的復制方法失敗。

我提前感謝大家的幫助!

一些有用的指導:

Option Explicit
'Copy sheet
Sub CopySheet()

    Dim ws1 As Workbook, ws2 As Workbook

    'It's better to declare sheets and avoid activate
    Set ws1 = Workbooks("Book1")
    Set ws2 = Workbooks("Book2")

    'Copy sheet "Test" from ws1(Book1) to ws2 (Book2) after all sheets
    ws1.Worksheets("Test").Copy After:=ws2.Worksheets(Sheets.Count)

End Sub

Option Explicit
'Copy a range
Sub CopyRange()

    Dim ws1 As Workbook, ws2 As Workbook

    'It's better to declare sheets and avoid activate
    Set ws1 = Workbooks("Book1")
    Set ws2 = Workbooks("Book2")

    'Copy from ws1(Book1), sheet "Test" & range A1:A5 to ws2 (Book2), sheet "sheet1" & range A1
    ws1.Worksheets("Test").Range("A1:A5").Copy
    ws2.Worksheets("Sheet1").Range("A1").PasteSpecial Paste:=xlPasteValues

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM