首页 > 解决方案 > 如何粘贴来自不同工作簿的范围?

问题描述

我的代码:

With wbImport.Worksheets("Data")
    LastCol = .Range("A1").End(xlToRight).Column
    LastRow = .Range("A1").End(xlDown).Row
    .Range("A1", .Cells(LastRow, LastCol)).Copy ' ‹-- Copy without Select
End With
    
wsData.Range("A1").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
  :=False, Transpose:=False

我正在尝试将 wbImport 的数据粘贴到我当前的工作簿 wsData 中。

几乎每次我得到

错误 1004 Range 类的特殊粘贴方法失败。

标签: excelvba

解决方案


我会像下面这样:

Dim wsData As Worksheet
set wsData = ... ' <-- set your target sheet

With wbImport.Worksheets("Data")
    With .Range("A1").CurrentRegion
        wsData.Range("A1").Resize(.Rows.Count, .Columns.Count).Value = .Value
    End With
End With

编辑:

如果您只对过滤后的行感兴趣,那么您必须返回CopyPasteSpecial方法

wbImport.Worksheets("Data").Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
wsData.Range("A1").PasteSpecial xlPasteValues

推荐阅读