我在excell中复制数据时遇到1004错误

时间:2018-09-19 15:57:44

标签: excel

我正在尝试将数据从一个大的excel文件复制到另一个(6K +行)。 目标是在检查是否已经存在一列数据之后,将3个单独的列彼此相邻地复制。我想制作一个宏,每天复制数据并将其放置在较旧的数据列旁边(中间有2列)。复制数据部分工作正常,但我无法弄清楚如何制作,因此复制数据之间存在空间。

即时消息错误是'范围'对象'_worksheet'的方法失败。

我的代码是:

Function Inc(ByRef i As Integer)
   i = i + 1
End Function

Sub grabData()

Dim wb1 As Workbook
Dim wb2 As Workbook

Dim ws1 As Worksheet


'## Open both workbooks:
Set wb1 = Workbooks("clipDataBaan.xlsm")
Set wb2 = Workbooks.Open("H:\Data\Documents\dataOpenOrders.xlsm")

Set ws1 = wb1.Worksheets("Data")


'this next piece of code is to determine the last column and add 2 empty spaces in between the next block of columns

Dim lclm As Integer

lclm = Cells(2, Columns.Count).End(xlToLeft).Column
Inc lclm
Inc lclm


'copy the first column:

wb2.Sheets("19-9-2018").Range("A2", wb2.Sheets("19-9-2018").Range("A65536").End(xlUp)).Copy

'Now, paste to worksheet:

ws1.Range(ws1.Cells(2, lclm)).PasteSpecial -this is where i get the error

Inc lclm 'step to the next column so data isnt pasted on top of eachother

'repeat for 2 other columns

wb2.Sheets("19-9-2018").Range("N2", wb2.Sheets("19-9-2018").Range("N65536").End(xlUp)).Copy

ws1.Range(ws1.Cells(2, lclm)).PasteSpecial

Inc lclm

wb2.Sheets("19-9-2018").Range("O2", wb2.Sheets("19-9-2018").Range("O65536").End(xlUp)).Copy

ws1.Range(ws1.Cells(2, lclm)).PasteSpecial

wb2.Close

End Sub

我知道我在选择正确的工作簿时做错了事,但是我无法终生弄清楚是什么。

如果我将粘贴命令更改为静态值,则其工作方式如下:

ws1.Range("A2").PasteSpecial

我尝试使用范围变量并在该变量中设置范围,然后在粘贴命令中使用该变量,如下所示:

ws1.Range("RangeVar").PasteSpecial

但是我仍然遇到相同的错误1004

预先感谢

2 个答案:

答案 0 :(得分:0)

您的问题不是“选择正确的工作簿” ,而是正确地引用了单元格。

如果要按行和列编号引用单元格,只需使用Cells并完全避免使用Range

ws1.Range(ws1.Cells(2, lclm)更改为ws1.Cells(2, lclm)

答案 1 :(得分:0)

如果您使用的是范围变量(Dim RangeVar as Range),则可以在不带Range()的情况下调用它:

Dim RangeVar as Range
Set RangeVar = ws1.Range("A2")
RangeVar.PasteSpecial

确保 确定 ,在您引用Range的任何地方,都应包含您希望使用的工作表。否则,它将引用任何ActiveSheet