【问题标题】:Copy data from one workbook to last line of another将数据从一个工作簿复制到另一个工作簿的最后一行
【发布时间】:2014-04-29 02:01:07
【问题描述】:

我得到这个代码来处理两张纸。可以很好地复制数据,但随后我将名称更改为我将使用的实际工作表,并且它无法正常工作。两个工作簿都是打开的,在使用它们时也会打开。

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 工作簿二中的工作表:数据转储

为什么它一直停在那里,我该如何解决它才能正常工作? 谢谢你。

【问题讨论】:

  • It will stop on this part 没有多大帮助..你看到什么错误?
  • 运行时错误“1004”:应用程序定义或对象定义错误。是我收到的错误
  • 试试LR = wb2.Sheets("Data Dump").Range("B" & wb2.Sheets("Data Dump").Rows.Count).End(xlUp).Row
  • 成功了 :) 谢谢!

标签: excel vba


【解决方案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

【讨论】:

  • 如果我用你在这里的内容替换 LR = wb2.Sheets("Data Dump").Range("B" & Rows.Count).End(xlUp).Row 会出错。但是您上面的那个确实可以。也许我不确定如何使用这个新的。
  • 另外,我如何编辑它以从 B17 开始并向下而不是从 B1 开始?感谢您的帮助
  • 1) 你用的和我用的一样吗:With 声明? 2) 使用LR = Application.Max(17,.Range("B" & .Rows.Count).End(xlUp).Row)
【解决方案2】:

使用单元格代替范围:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-26
    • 1970-01-01
    相关资源
    最近更新 更多