【VBA案例020】整合工作簿

327 字
2 分钟
【VBA案例020】整合工作簿

大家好!今天回答一位粉丝朋友的提问。

问题是:将多个工作簿中的所有工作表合并汇总,要求名称相同的工作表内容要合并在一起,名称不同的要单独作为一个工作表。

为此,我模拟了一份数据,结构如下图:

这个问题,其实是我之前分享的【案例011合并工作表】和【案例013汇总工作簿】的融合版。方法非常的相似。其实对于工作簿和工作表的合并与拆分的操作,之前的案例基本都分享完了。只要融会贯通,举一反三,相信这种问题将迎刃而解。

效果就不演示了,以下是VBA代码。详细解析请看文末的视频。

Option Explicit
Sub 汇总合并工作簿()
Dim shtName
Dim sht As Worksheet
For Each sht In ThisWorkbook.Worksheets
shtName = shtName & "," & sht.Name
Next
Dim filePath$, fileName As String
filePath = ThisWorkbook.Path & "\文件夹\"
fileName = Dir(filePath & "*.xlsx")
Dim row_count, thisRow_count
Application.ScreenUpdating = False
Do While fileName <> ""
With Workbooks.Open(filePath & fileName)
For Each sht In .Worksheets
If InStr("," & shtName & ",", "," & sht.Name & ",") > 0 Then
row_count = sht.[a65536].End(3).Row
thisRow_count = ThisWorkbook.Worksheets(sht.Name).[a65536].End(3).Row
sht.Range("a2:e" & row_count).Copy ThisWorkbook.Worksheets(sht.Name).Range("a" & thisRow_count + 1)
Else
sht.Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
shtName = shtName & "," & sht.Name
End If
Next
.Close False
End With
fileName = Dir
Loop
Application.ScreenUpdating = True
End Sub

原始链接

支持与分享

如果这篇文章对你有帮助,欢迎分享给更多人或打赏支持!

打赏
【VBA案例020】整合工作簿
https://fanrich.eu.org/posts/程技/vba/vba案列/vba案例020整合工作簿/
作者
richfan
发布于
2023-10-23
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
richfan
Hello, I'm richfan.
公告
欢迎来到我的博客!这是一则示例公告。
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
779
分类
8
标签
138
总字数
3,267,679
运行时长
0
最后活动
0 天前
站点信息
构建平台
Cloudflare Pages
博客版本
Firefly v6.13.5
文章许可
CC BY-NC-SA 4.0

文章目录