将范围从一个工作簿复制到另一个

JKR*_*KRH 0 excel vba

我想将数据从一个工作簿复制到另一个。

以下行有效:

Workbooks(TempBook.Name).Worksheets(sheet_Index).Range("A1:A20").Copy _
  Workbooks(mainWB.Name).Worksheets(sheet_Index).Range("A1")
Run Code Online (Sandbox Code Playgroud)

这抛出

应用程序定义或对象定义

Workbooks(TempBook.Name).Worksheets(sheet_Index).Range("A1", Range("A1").End(xlDown)).Copy _
  Workbooks(mainWB.Name).Worksheets(sheet_Index).Range("A1")
Run Code Online (Sandbox Code Playgroud)

为什么我不能选择动态范围?

Big*_*Ben 5

  1. Range("A1").End(xlDown)需要使用工作表和工作簿进行限定,否则它隐含在ActiveSheet.
  2. Workbooks(TempBook.Name)应该只是TempBook。对于Workbooks(mainWB.Name).
  3. 旁注:您可能会考虑使用xlUp查找最后一行而不是xlDown.
With TempBook.Worksheets(sheet_Index)
    .Range("A1", .Range("A1").End(xlDown)).Copy _
        Destination:=mainWb.Worksheets(sheet_Index).Range("A1")
End With
Run Code Online (Sandbox Code Playgroud)

  • @JKRH,因为您可能会在中间遇到空白行,所以您的“xlDown”将停在那里,而“xlUp”将始终获得最后一行,因为它来自工作表中的最后一行到从下面找到的第一行。 (2认同)