【发布时间】:2018-02-17 08:27:56
【问题描述】:
我需要将一个文件夹中的所有工作簿合并到一个文件中,我正在寻找的规范是我的文件夹是动态的,所以我需要一个用于代码的文件夹选择器。接下来文件夹中的每个工作簿都有多个工作表,我只需要合并具有名称(“报告”)的工作表。数据也从范围(“A7”)开始。它还包含各个表格中的公式,因此组合后不应出现公式错误。
有人可以帮忙吗?
Sub GetWorkbook()
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
Path = ThisWorkbook.Path & "\"
Filename = Dir(Path & "*.xlsx")
Do While Filename <> ""
Workbooks.Open Filename:=Path & Filename, ReadOnly:=True
ActiveSheet.AutoFilterMode = False
Sheets("Report").Copy After:=ThisWorkbook.Sheets(1)
Range("1:6").EntireRow.Hidden = True
Workbooks(Filename).Close
Filename = Dir()
Loop
Application.DisplayAlerts = True
Combine
Sheets("Home").Select
MsgBox ("Data Consolidated"), vbInformation
End Sub
Function combine
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name <> "Combined" And ws.Name <> "Home" Then
ws.Activate
Dim LastRowW As Long
LastRowW = ActiveSheet.Cells(Rows.Count, 1).End(xlUp).Row
ActiveSheet.Range("A7:P" & LastRowW).Copy
Sheets("Combined").Select
Range("A1048576").End(xlUp).Offset(1, 0).Select
ActiveCell.PasteSpecial (xlPasteValues)
ws.Delete
End If
Next ws
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
End Function
这是代码,我在宏工作簿中主要有 2 个工作表(组合和家庭)。第二个功能是将详细信息复制到组合工作表并删除其他工作簿。仅当所有工作簿都保存在(此工作簿路径)中时,这才有效。如何启用文件夹选择器来合并所选文件夹中的文件。
【问题讨论】:
-
欢迎来到 Stack Overflow! 当在其他地方找不到问题的解决方案时,此站点供程序员提问/回答问题。 (抱歉,不是“免费代码编写服务”)请参阅tour 和“How to Ask”,还有关于提供示例的重要提示“minimal reproducible example”。请表明您在寻求帮助之前努力自己找到了解决方案(针对特定问题)。你可以随时edit你的问题来展示你到目前为止所做的尝试。更多信息:help center 加上these great tips。
-
我错过了更新代码。现在我已经编辑了代码。请检查
-
你能帮我找到一个解决方案来整合所选文件夹中的文件吗?仅当工作簿保存在我们需要合并的文件夹中时,上述代码才有效。请支持!
-
您是否阅读了我在上面与您分享的链接?
-
我刚刚尝试了你的代码,老实说,我很惊讶它运行得和它一样好。我以前从来没有理由将工作簿合二为一,但如果我这样做,谷歌将是我最好的朋友(一如既往)......这部分是因为你是唯一真正了解你的人'正在尝试做...我认为最大的问题是您没有正确解释自己,再加上 无法查看您的数据,其他人很难帮助您。另外,这里有很多人从某个地方复制代码,然后说“好的,伙计们,让它工作!”
标签: vba file consolidation