我有这个宏文件(“graphPrint.xls”),它通过复制并粘贴到宏文件中来读取文件中的数据,这会生成使用粘贴的数据绘制图表。 现在,我需要修改此宏,以便它可以从4个文件中读取数据,并将所有数据组合在宏文件中,并生成一个包含所有数据的图。VBA从文件中复制数据并将其粘贴到另一个文件的末尾
我所要做的,就是
- 开来读取数据文件,
- 文件中复制数据,
- 将其粘贴到宏文件,
- 接近文件。我想在for循环中重复这个过程。
这里的问题是,在(3),当我粘贴读入宏文件中的数据,我必须确保它在数据的末尾粘贴每次所以它不会取代以前的数据。
假设文件名是file0.csv
直到file3.csv
。 我有这样的宏:
Dim readFile As String;
For i = 0 To 3
readFile = "file" + CStr(i) + ".csv" 'get file name
WorkbooksOpen Filename:= readFile 'open file
ActiveSheet.Cells.Select 'select all data from the file
lastRow = Range("A1").End(xlDown).Row 'edited
Selection.Copy 'copy all
Windows("graphPrint.xls").Activate 'open macro file
ActiveSheet.Paste 'paste here in macro file
Application.CutCopyMode = False 'cancel the copy mode
Windows(readFile).Activate
ActiveWindow.Close 'close this file
Next i
然而,这个宏替换新的每一次粘贴的时候,因此,旧的数据,显示将只能从最后读取文件中使用的数据图。该文件列从“A1”到“Z1”开始,所以我改变
ActiveSheet.Paste
与
Range(Range("A1:Z1" & lastRow), ActiveCell.End(xlDown)).Offset(1,0).PasteSpecial
,希望将它每次粘贴在宏观文件的末尾,而这我可以将所有数据反映到图表中。然而,这给
“object'_Worksheet的方法 '范围' 失败”
错误。
有人能指导我解决问题吗?谢谢。
您是否在某处定义了'lastrow'? –
是的,我在上面的代码中跳过了这一行。我编辑它。我仍然得到同样的错误。我只是意识到,每次lastRow越来越65536 ... –
好的。所以,如果你有最后一行数据,为什么你没有以简单的方式使用它? ;)'Range(“A”&lastrow)'给你列A中的最后一个单元格。再次检查'Range(“A1:Z1”&lastRow)''中你在做什么。 –