在不同的工作簿之间复制/粘贴值

时间:2019-07-02 15:58:48

标签: excel vba copy-paste

我想使用VBA从一个工作簿中复制一系列数据并将其粘贴到另一工作簿中。要知道将信息粘贴到哪里,我搜索下一个空行。

在尝试复制粘贴值时,代码可以成功工作到最后一部分。我没有任何错误,也没有任何成功或失败的迹象。我可以看到它被正确复制(行进点),并且选择了正确的单元格,但是没有粘贴任何内容。

Sub Button1_Click()
   Dim wb1 As Workbook
   Dim sht As Worksheet
   Dim rng As Range
   Dim databasewb As Workbook
   Dim databasesht As Worksheet
   Dim eRow As Integer

    'set workbooks to variables

    Set databasewb = Workbooks("Aged Debt Data V1.xlsm")

    Set wb1 = Workbooks.Open("C:\Users\roanderson\Desktop\Aged debt\Templates\BIO Inc (IO) Template.xlsx")


    'select sheet where data lies

    Set sht = wb1.Sheets("Conversion to aged debt format")
    sht.Activate

    'copy range on sheet

    Set rng = sht.Range("A2", Range("A2").End(xlDown).End(xlToRight))
    rng.Copy


    ' paste range into database

     'activate database workbook
    databasewb.Activate

    'find next empty row
    eRow = Sheet1.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
    MsgBox (eRow)

    'paste values into empty row
    Sheet1.Cells(eRow, 1).Select
    rng.PasteSpecial Paste:=xlPasteValues
    wb1.Close

End Sub

要粘贴到Datebase工作簿中的数据,

2 个答案:

答案 0 :(得分:1)

如果可能,请尽量避免将复制粘贴与VBA以及avoid using select一起使用。由于您只想复制值,因此使用VBA的Value方法可能会更容易。修改您的代码行,尝试在其中粘贴特殊设置值。见下文

'paste values into empty row
Sheet1.Cells(eRow, 1).Resize(RNG.Rows.Count, RNG.Columns.Count).Value = RNG.Value
wb1.Close

这是从Cells(erow,1)开始执行的操作,代码使用Resize将开始范围设置为相同的行数和列数或变量RNG。然后,它只是设置值,与CopyPasteValue相同的结果只是开销更少。

但是,如果您确实想保留“复制粘贴”值的方法,则可以这样修改代码:

'paste values into empty row
Sheet1.Cells(eRow, 1).PasteSpecial Paste:=xlPasteValues
wb1.Close

答案 1 :(得分:0)

rng.pastespecial更改为 selection.pastespecial