请原谅我的VBA无知..我试图自动从源工作簿中导出所选列,该工作簿是从基于Web的源连续填充的。记录保留过程需要目标工作簿。我的问题是,简单的复制/粘贴将写入目标工作簿中的单元格。我有代码来计算我的目标表中使用的最后一行,我打电话给lastrow
。我希望使用lastrow
作为行值,以便我可以从源我的目标工作簿计算的lastrow
开始的源工作簿中进行复制。目标是从源表中不断向目标表单添加行,而无需覆盖现有的数据行。
Sub johnson()
Dim wb As Workbook, wbTemp As Workbook
Dim ws As Worksheet, wsTemp As Worksheet
Dim lastrow As Long
Set wb = ThisWorkbook
Set ws = wb.Sheets("Sheet1")
Set wbTemp = Workbooks.Open("F:\Projects\Ballot Reconciliation\DRAFT 2014
Reconciliation spreadsheet.xlsx")
Set wsTemp = wbTemp.Sheets("Sheet1")
'calculate last row having been used in the destination worksheet
lastrow = wsTemp.Range("B" & Rows.Count).End(xlUp).Row + 1
'use lastrow as the input row value for the copy out of the source worksheet.
ws.Range("A(lastrow):A5000").Copy wsTemp.Range("B" & lastrow)
Application.CutCopyMode = False
wbTemp.Close savechanges:=True
Set wb = Nothing: Set wbTemp = Nothing
Set ws = Nothing: Set wsTemp = Nothing
End Sub
答案 0 :(得分:0)
您还需要计算记录保存表上的最后一行,并使用该作为目标设置.Copy
操作(而不是源表中的最后一行):< / p>
Dim LastTargetRow As Long
'... do stuff
With wsTemp
LastTargetRow = .Range("B" & .Rows.Count).End(xlUp).Row + 1
End With
'... do stuff
然后您只需复制到wsTemp.Range("B" & LastTargetRow)
。
这里有些挑剔的东西,但可能会让你更加头疼......你对调整变量名称有什么看法,以更好地表明他们的目标是什么?我可能会选择Source
而不是ws
来描述源数据表,DestBook
表示目标工作簿,Dest
表示目标工作表...
答案 1 :(得分:0)
在这里回答我自己的问题,但这就是我所做的:ws.Range("A" & lastrow & ":" & "A5000").Copy wsTemp.Range("B" & lastrow)
。有效!