簡體   English   中英

錯誤1004-打開和激活工作簿

[英]Error 1004 - Opening and activating workbooks

嘗試在工作簿之間復制/粘貼數據時遇到一些問題。 我需要從兩個不同的工作簿(A和B)中提取數據,然后將其放入第三個工作簿中。 由於A和B具有完全相同的結構,因此我對兩者使用相同的代碼。 但是,它適用於A,並且B出現錯誤1004。

如果您沒有正確指定父級工作簿/工作表,但我認為這不是問題,因為代碼適用於A。

如果有人對此事有見識,我會很高興!

謝謝您的幫助!

CH

    Sub Data_Extraction()

    Dim wb As Workbook, wba As Workbook, wbb As Workbook
    Set wb = ActiveWorkbook
    Set wba= Workbooks.Open("D:\xxx\A.xlsx")
    Set wbb= Workbooks.Open("D:\xxx\B.xlsx")

    Dim wsa As Worksheet, wsb As Worksheet
    Set wsa = wb.Worksheets("a")
    Set wsb = wb.Worksheets("b")

   'I use a named variable here 
    X = Range("X")

    If X=2 Then

        ''We fill the tab a''
        For i = 9 To 400
           wba.Activate
           If wba.Worksheets("a").Cells(i, 2).Value = 5 Then
               wba.Worksheets("a").Range(Cells(i, 1), Cells(i, 8)).Copy
               wb.Activate
               wsa.Range(Cells(7, 2), Cells(7, 9)).PasteSpecial Paste:=xlPasteValues
               wsa.Range("B7").EntireRow.Insert
           End If
        Next i

        ''We fill the tab b''
        For i = 9 To 400
           wbb.Activate
           If wbb.Worksheets("b").Cells(i, 2).Value = 5 Then
               wbb.Worksheets("b").Range(Cells(i, 1), Cells(i, 8)).Copy
               wb.Activate
               wsb.Range(Cells(7, 2), Cells(7, 9)).PasteSpecial Paste:=xlPasteValues
               wsb.Range("B7").EntireRow.Insert
           End If
        Next i

    End If
   End Sub

在許多情況下,當您使用Excel方法(如保護/取消保護復制/粘貼)時,應盡量模仿用戶在執行這些步驟時Excel所處的配置,如果您遠離這些配置,則很可能最終出現不穩定,出現在通用錯誤代碼5和1004中。

在這種情況下,我相信你應該做

wbb.Worksheets("b").Activate

從工作表(“ b​​”)開始復制之前

真正的問題不是您沒有激活工作表(盡管可以工作,但這不是一個好的解決方案)

wbb.Worksheets("b").Range(Cells(i, 1), Cells(i, 8)).Copy

這里的Cells()調用(不同於Range()調用)不受任何工作表對象的限制,因此它們將默認為ActiveSheet。 在常規模塊中,這等效於編寫:

wbb.Worksheets("b").Range(ActiveSheet.Cells(i, 1), ActiveSheet.Cells(i, 8)).Copy

...如果活動工作表不是您期望的那樣,則容易發生故障。

這很強大,不需要您激活特定的工作表:

With wbb.Worksheets("b")
     .Range(.Cells(i, 1), .Cells(i, 8)).Copy
End With

暫無
暫無

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

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