我有這個宏文件(「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)''中你在做什麼。 –