【发布时间】:2022-12-14 23:47:12
【问题描述】:
我的任务是将每个工作簿中的一张工作表(数量可能不同)从一个文件夹合并到一个主工作簿中。
每个工作簿都基于一个模板,所以它们看起来都一样,每个都有两张纸。
我需要复制其中一张名为“填写”的表格。
结果应该是:主数据工作簿,其中包含与文件夹中的文件一样多的工作表,并且每个工作表都包含“填写”工作表中的数据。
Sub MergeWorkbooks()
Dim FolderPath As String
Dim File As String
FolderPath = "C:\Users\" & Environ("username") & "\Downloads\BH\"
File = Dir(FolderPath)
Do While File <> ""
Workbooks.Open FolderPath & File
ActiveWorkbook.Worksheets("Fill this out").Copy _
after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
ActiveSheet.Name = File
Workbook.Close FolderPath & File
File = Dir()
Loop
End Sub
这将复制第一个文件,然后弹出错误 400。
此外,新的工作表名称是:“填写”而不是文件名。
【问题讨论】:
-
至少存在一个不一致之处:
Workbook.Close FolderPath & File>Workbook不是 VBA 可识别的函数/命令。 -
你好@ALeXceL 最初我的命令是
Workbook(File).Close但是这个改变给我错误:编译错误:子或函数未定义。 -
因为
Workbook在 Excel VBA 中不作为对象或命令存在。它是一个变量类型。听起来您想关闭该工作簿:Workbooks(File).Close savechanges:=False -
始终在代码模块的开头使用“Option Explicit”,以便 VBE 立即标记此类问题。