长时间阅读器和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打开,但随后代码停止? –