我想使用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工作簿中的数据,
答案 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