長時間閱讀器和StackOverflow的崇拜者。VBA - 從多個Excel文件複製並粘貼到單個Excel文件
基本上我試圖通過一系列Excel文件來複制一系列數據並將其粘貼到一個Excel工作簿/工作表上。
單元格區域位置(C3:D8,D3:E8)並不總是一致的,但表格尺寸爲:29 R x 2 C.此外,這些文件只有一個表格,並且除了指定的表格尺寸,其他單元格中沒有數據值。
在其當前形式的代碼正在執行,但沒有粘貼任何東西到其目標Excel文件。
我需要它
- 通過到下一個文件 查找文件(表)的數據維度
- 複製表
- 粘貼到目的地(以前見下表)
- 循環
- 重複步驟1-4
該代碼是從: Excel VBA: automating copying ranges from different workbooks into one final destination sheet?
非常感謝任何幫助,我真的很感激它,並請感覺告訴我,如果我的問題含糊不清,請指定任何內容。
Sub SourcetoDest()
Dim wbDest As Workbook
Dim wbSource As Workbook
Dim sDestPath As String
Dim sSourcePath As String
Dim shDest As Worksheet
Dim rDest As Range
Dim vaFiles As Variant
Dim i As Long
'array of folder names under sDestPath
'array of file names under vaFiles
vaFiles = Array("Book1.xls")
sDestPath = "C:\Users"
sSourcePath = "C:\Users"
Set wbDest = Workbooks.Open(sDestPath & "\" & "Book2.xlsm")
Set shDest = wbDest.Sheets(1)
'loop through the files
For i = LBound(vaFiles) To UBound(vaFiles)
'open the source
Set wbSource = Workbooks.Open(sSourcePath & "\" & vaFiles(i))
'find the next cell in col C
Set rDest = shDest.Cells(shDest.Rows.Count, 3).End(xlUp).Offset(1, 0)
'write the values from source into destination
rDest.Resize(5, 1).Value = wbSource.Sheets(1).Range("C7:D33").Value
wbSource.Close False
Next i
End Sub
你的代碼似乎很好,你有沒有嘗試在breakmode中通過它?你只需要這個部分來調整你的初始數據範圍,但是你不能在那裏處理任何東西(因爲你已經知道'End()'函數)。但是我不明白爲什麼在目標表中沒有任何數據... – R3uK
如果您嘗試'wDSource.Sheets(1).Range(「C7:D33」)。請在rDest之前選擇。 Resize(5,1).Value = wbSource.Sheets(1).Range(「C7:D33」)。Value 'line,它會突出顯示源數據。使用F8瀏覽你的代碼並檢查你的源代碼範圍是否正確。接下來嘗試'rDest.Resize(5,1).Select'來檢查目標範圍。一旦這些是正確的,你可以在完成調試後刪除這兩行。 – tonester640
謝謝,有趣的事情是當用F8滾動代碼時,它得到行設置wbDest = Workbooks.Open(sDestPath&「\」&「Book2.xlsm」)excel文件Book2打開,但隨後代碼停止? –