【发布时间】:2018-06-04 16:16:24
【问题描述】:
我想在 VBA 中编写一个代码,它将数据从不同的 Excel 表(都在一个文件夹中)复制到另一个 excel。 我尝试编写一个循环,遍历文件夹中的不同 excel,打开它们,复制一些内容,然后将其粘贴到另一个 excel 工作簿的末尾。对于最后一步,我将不得不使用“Dim last as long”,但我还没有。
没有缺陷说明,但宏不做任何事情。
我是 VBA 的新手,非常感谢任何建议!
Sub copypaste()
Dim strFileName As String
Dim strFolder As String: strFolder = "L:....xlsx"
Dim strFileSpec As String: strFileSpec = strFolder & "*.xlsx"
strFileName = Dir(strFileSpec)
Do While Len(strFileName) > 0
Dim x As Workbook
Dim y As Workbook
Set x = Workbooks.Open("strFileSpec")
Set y = Workbooks.Open("L:....xlsx")
'Now, transfer values from x to y:
y.Sheets("aaa").Range("C2:BI8").Value = x.Sheets("bbb").Range("A5:BG10")
x.Close
strFileName = Dir
Loop
End Sub
【问题讨论】:
-
您是否使用 F8 单步执行您的代码以查看您的
Do循环的主体是否执行?这似乎是一个明显的罪魁祸首。 -
您可能需要一个值
x.Sheets("bbb").Range("A5:BG10").value您也没有复制数据,您正在制作 1 个范围 = 另一个范围。这样做时,两个范围的大小必须相同。strFolder = "L:....xlsx"不是文件夹名称。查看我的示例代码以遍历文件夹。Loop Through a folder -
你也在同一个目的地复制,所以只有 last 组值可以由上面的代码处理,前提是你解决了字符串分配的问题.
-
analysistabs.com/excel-vba/… 等等,如果您进行网络搜索。比较方法和限制可能值得。
-
您有机会尝试我的解决方案吗?
标签: vba excel loops copy-paste