将数据从一个工作簿复制到另一个工作簿的最后一行

时间:2014-04-28 16:37:27

标签: excel excel-vba vba

我让这个代码与两张纸一起使用。将数据复制好但后来我改名字,改为我将要使用的实际工作表,并且工作得很好。这两本工作簿都是开放的,并且在与他们合作时将会打开。

Sub copypasteover()
Dim wb1 As Workbook, wb2 As Workbook, LR As Long
Set wb2 = Workbooks("TS-141260 Data Dump C312H ABC Tester.xls")
Set wb1 = ThisWorkbook
LR = wb2.Sheets("Data Dump").Range("B" & Rows.Count).End(xlUp).Row
wb1.Worksheets("Data Origin").Range("A36:c36").Copy Destination:=wb2.Worksheets("Data Dump").Range("B" & LR + 1)
Application.CutCopyMode = False
End Sub

它将停止在这一部分:

LR = wb2.Sheets("Data Dump").Range("B" & Rows.Count).End(xlUp).Row

该代码旨在从一个工作簿中复制某个范围并将其粘贴到另一个工作簿的最后一个空行中。

我已尝试在代码中,工作簿上的工作簿上更改名称,但它仍然存在错误。是否与第二个工作簿名称的长度或间隔的名称有何关系?

练习册一:copy-paste.xlsm 工作簿一中的工作表:数据源(运行脚本的按钮)

练习册二:TS-141260数据转储C312H ABC Tester.xls 工作簿二中的工作表:数据转储

为什么它会一直停在那里,我该如何修复它以便它能够正常工作? 谢谢。

2 个答案:

答案 0 :(得分:1)

我注意到您的第二个工作簿有xls扩展名:"...Tester.xls"。但xls工作簿只有65536行,而xlsx/xlsm - 1048576行。

Range("B" & Rows.Count)部分Rows.Count中指的是活动工作表,似乎活动工作表属于ThisWorkbook,其中包含1048576行。所以请改用这个:

With wb2.Sheets("Data Dump")
   LR = .Range("B" & .Rows.Count).End(xlUp).Row
End With

答案 1 :(得分:0)

使用单元格代替范围:

LR = wb2.Sheets("Data Dump").Cells(Rows.Count,2).End(xlUp).Row