不使用剪贴板粘贴特殊

时间:2018-06-27 15:56:33

标签: excel vba

我正在尝试将一系列数据从一个文件粘贴到另一个文件。但这会影响目标文件的格式。请求您的帮助。

下面是我正在使用的代码的一部分:

    Dim repdata As Range

    Set wb1 = Workbooks.Open("file name")

    Set repdata = Range("A2", Cells(lastrow, lastcol))

    Set wb = Workbooks.Open("file2")

    repdata.Copy Destination:=Range("B8")

但这会覆盖目标中的格式。

我尝试过:

    repdata.Copy Destination:=Range("B8").PasteSpecial(xlPasteValues).

这不起作用。给出错误

我也尝试过

    repdata.Copy Destination:=Range("B8").PasteSpecial xlPasteValues. 

即使这不起作用。给出错误

2 个答案:

答案 0 :(得分:1)

很难给您一个确定的答案,因为您没有用Minimal, Complete and Verifiable Example发表问题-在以后的问题中应该牢记这一点。


要回答您的问题,斧头很可能就在这里-请勿将DestinationPasteSpecial一起使用
假设代码中的所有其他功能都正常,这应该可以正常工作。

Dim repdata As Range
Dim wb1 as Workbook, wb2 As Workbook

Set wb1 = Workbooks.Open("file name")
Set wb2 = Workbooks.Open("file2")
Set repdata = wb1.Range("A2", Cells(lastrow, lastcol))

repdata.Copy
wb2.Range("B8").PasteSpecial xlPasteValues

答案 1 :(得分:0)

这是直接值传输的示例,不会影响目标格式。

dim wb as workbook, wb1 as workbook
Dim repdata As Range, lastrow as long, lastcol as long

Set wb1 = Workbooks.Open("file name")

with wb1.worksheets("sheet")
    lastrow = .cells(.rows.count, "A").end(xlup).row
    lastcol = .cells(2, .columns.count).end(xltoleft).column

    with .Range(.cells(2, "A"), .Cells(lastrow, lastcol))
        Set wb = Workbooks.Open("file2")
        wb.worksheets("sheetx").cells(8, "B").resize(.rows.count..columns.count) = .value
    end with
end with

依靠新打开的工作簿的activesheet属性被认为不是“最佳实践”。正确引用您的工作表,即使这意味着为单个工作表工作簿使用worksheets(1)。