excel VBA中的范围不正确

excel VBA中的范围不正确,excel,vba,range,copy-paste,Excel,Vba,Range,Copy Paste,我试图创建一个宏,将数据从excel复制到另一个excel(即template-.xltx) 所以我写了一个代码: Option Explicit Sub GenerujD5() Dim xWb As Workbook Dim path As String Dim wsCopy As Worksheet Dim wsDest As Worksheet Dim copylastrow As Long Dim pasterow As Long path = "C:\pc2\expor

我试图创建一个宏,将数据从excel复制到另一个excel(即template-
.xltx

所以我写了一个代码:

Option Explicit

Sub GenerujD5()

Dim xWb As Workbook
Dim path As String
Dim wsCopy As Worksheet
Dim wsDest As Worksheet
Dim copylastrow As Long
Dim pasterow As Long

path = "C:\pc2\export\export.xls"

Set wsCopy = Workbooks.Open(path).Worksheets("export")
Set wsDest = ThisWorkbook.ActiveSheet

copylastrow  = wsCopy.Cells(wsCopy.Rows.Count, "A").End(xlUp).Row
pasterow = wsDest.Cells(wsDest.Rows.Count, "A").End(xlUp).Offset(1).Row

wsCopy.Range("A2:M" & copylastrow).Copy
wsDest.Range("A5" & pasterow).PasteSpecial xlValues

End Sub
我的问题:


它正在复制数据,但没有复制到正确的单元格中。模板有4行,所以我必须将它们复制到5行中。一行但它复制到了55。行。

计算目标工作表中的第一个空闲行,并将其写入变量
pasterrow
。假设您的目的地工作表有四行填写,这将是5行

稍后编写
wsDest.Range(“A5”&pasterow.pastervalues
。现在VBA将把字符串
“A5”
和变量
粘贴行的内容连接起来,这与
“A5”&5”
相同,这将导致
“A55”

如果您确信将始终填充四行,则可以去掉变量
pasterrow
,只需编写

wsDest.Range("A5").PasteSpecial xlValues
但更好的尝试是使用它并编写

wsDest.Range("A" & pasterow).PasteSpecial xlValues
作为替代方案,您也可以编写

wsDest.Cells(pasterow, 1).PasteSpecial xlValues


计算目标工作表中的第一个空闲行,并将其写入变量
pasterrow
。假设目标工作表已填充四行,则该值为5

稍后编写
wsDest.Range(“A5”&pasterow).粘贴特殊的xlValues
。现在VBA将连接字符串
“A5”
和变量的内容
pasterow
,这与
“A5”&5”
相同,这将导致
“A55”

如果您确信将始终填充四行,则可以去掉变量
pasterrow
,只需编写

wsDest.Range("A5").PasteSpecial xlValues
但更好的尝试是使用它并编写

wsDest.Range("A" & pasterow).PasteSpecial xlValues
作为替代方案,您也可以编写

wsDest.Cells(pasterow, 1).PasteSpecial xlValues