VBA复制一个工作簿并粘贴到另一个工作簿

4

工作: 将一个工作簿中的范围复制到另一个工作簿中(已存在另一个工作簿且需打开)

  1. Copy range:

    `Worksheets("paste").Range("A2:BD500").SpecialCells(xlCellTypeVisible).Copy`
    
  2. Open new file:

    Workbooks.Open Filename:="C:\Test\test.xlsx", WriteResPassword:="WriteFile"

  3. Activate sheet and paste @RANGE A6

    Windows("test.xlsx").Activate Selection.Range("A6").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False

问题:无法粘贴到A6单元格中!!!粘贴到任何单元格中都可以!!!


1
请将您的代码按照工作簿中的原样发布。仅从项目符号中很难确定问题所在...... - Sorceri
2个回答

6
如果您当前在test.xlsx工作簿中选择的是D5,那么使用Selection.Range("A6")引用的是D10,而不是A6。
Dim wb As Workbook

Set wb = Workbooks.Open(Filename:="C:\Test\test.xlsx", WriteResPassword:="WriteFile")

With Worksheets("paste")
    .Range("A2:BD500").SpecialCells(xlCellTypeVisible).Copy
    wb.Worksheets(1).Cells(6, "A").PasteSpecial xlPasteValues
End With

请参见如何避免在Excel VBA宏中使用Select。 在打开工作簿时,永远不应该依赖于静态单元格或单元格作为当前选择。


这非常有帮助!它在测试表上运行,但实际表格更复杂,我得到了“粘贴范围类的pastespecial方法失败1004”的错误。有什么办法可以绕过这个问题吗? - Freedox
错误显示在 wb.Worksheets(1).Cells(6, "A").PasteSpecial Paste:=xlPasteValuesAndNumberFormats。 - Freedox

0

在工作簿之间复制特定范围的简单方法:

Workbooks(source).Worksheets("Sheet1").Range("A2:BD500").Copy _
    Workbooks(destination).Worksheets("Sheet1").Range("A6")

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接