从一个工作簿粘贴到另一个工作簿时出现1004错误

时间:2019-02-15 11:36:09

标签: excel vba

我要做的是打开一个工作簿,将所有数据复制到它的第一张工作表上,然后将该数据添加到另一张工作簿中工作表的第一行上。粘贴数据时似乎遇到了问题,但我不完全理解为什么。我已经运行了代码,只是复制了工作表的第一行,然后使用我的方法来找到第一个空行并将其粘贴到上面,这已经奏效了,所以我对复制/选择日期必须有所了解。 / p>

这是代码:

    MyFile6.Activate
MyFile6.Worksheets(1).Activate
Cells.Select
Selection.Copy
Windows("Frávikagreining.xlsm").Activate
Sheets("Laun").Select
Dim Rng As Long
Rng = Cells(Rows.Count, 1).End(xlUp).Row + 1
Cells(Rng, 1).Select
ActiveSheet.Paste

我已经定义并打开了工作簿“ MyFile6”(此处未显示代码)。因此,我将数据复制到该工作簿MyFile6的第一张工作表上,然后在另一工作簿上打开工作表“ Laun”,在A列中找到最后使用的行,再往下走(第一个空单元格)并选择它。但是随后我的粘贴尝试因错误而停止。

任何帮助/更好的方法将不胜感激!

1 个答案:

答案 0 :(得分:0)

Cells.Select
Selection.Copy
  1. 由于复制ALL Cells而不粘贴A1导致出现此错误。因此,错误。您正在尝试将较大的object放入较小的object中。通过在第一张工作表中查找最后一行,然后确定要复制的范围,然后进行相应的粘贴,来处理实际的范围对象而不是All Cells
  2. 也请避免使用.Select/Activate。您可能需要查看How to avoid using Select in Excel VBA

您的代码可以写为(未测试

Dim lRow As Long, lCol As Long
Dim rngToCopy As Range
Dim thatWb As Workbook

'~~> Destination Workbook
Set thatWb = Workbooks("Frávikagreining.xlsm")

With MyFile6.Worksheets(1)
    '~~> Find last row and column
    lRow = .Range("A" & .Rows.Count).End(xlUp).Row
    lCol = .Cells(1, .Columns.Count).End(xlToLeft).Column

    '~~> Set your range to copy
    Set rngToCopy = .Range(.Cells(1, 1), .Cells(lRow, lCol))
End With

With thatWb.Sheets("Laun")
    '~~> find last row in destination sheet for pasting
    lRow = .Range("A" & .Rows.Count).End(xlUp).Row + 1

    '~~> Copy and paste
    rngToCopy.Copy .Range("A" & lRow)
End With