WPS如何将多个工作簿汇总成总表并保留源文件名?

功能定位:为什么必须保留源文件名
在月度销售、分校成绩或银行回单场景中,仅合并数据会丢失“数据血缘”。保留源文件名,可快速定位原始凭证,满足审计与回查需求。WPS 表格 2026 版提供两条官方通道——Power Query 与 VBA——均能在合并瞬间把文件名写进新列,避免后续手工补录。
版本演进:两条通道的成熟度变化
2022 及更早版本仅 VBA 可用;2024 引入 Power Query 预览;2026 V13.12.0 起,Power Query 脱离插件,直接嵌在「数据」选项卡,中文界面完整,已支持列名自动解析与文件名抓取。VBA 方案则一直保持向后兼容,适合老模板迁移。
前置检查:你的环境是否达标
- Windows 桌面版 WPS Office,需 V13.12.0 及以上(菜单→帮助→关于可见版本号)。
- macOS 版目前仅开放 VBA 接口,Power Query 仍在灰度,若菜单无「获取数据」则只能走 VBA。
- 所有待汇总工作簿需放在同一文件夹,且保持表头一致;若字段顺序不同,Power Query 会自动按列名对齐,VBA 需额外写映射数组。
通道一:Power Query 最短路径(推荐新手)
步骤 1 启动查询
打开空白总表→「数据」→「获取数据」→「自文件夹」。在弹出的资源管理器窗口中,选中存放源工作簿的文件夹,点「选择文件夹」。此时 Power Query 已嗅探到目录内所有 Excel 文件,准备进入清洗环节。
步骤 2 筛选与解析
导航器列出目录下所有文件后,先勾选「组合」→「合并并加载」。在「选择工作表」小窗里,指定要抓取的 Sheet;若各文件表名一致,可勾选「按名称」实现自动匹配,否则选「按位置」如 Sheet1 更稳妥。
步骤 3 插入源文件名列
进入 Power Query 编辑器,右侧「应用的步骤」已自动生成「源」「导航」「已合并文件」三步。点击「已合并文件」右侧齿轮图标→勾选「保留文件名作为列」→确定,系统会新增一列,列名默认为 Source.Name,存放完整文件名(含扩展名)。
步骤 4 清洗与上载
如需去掉扩展名,选中新列→「转换」→「提取」→「范围」,输入 0 到倒数第 5 位(经验性观察:.xlsx 占 5 字符)。完成后点「关闭并加载」,数据即返回到当前工作簿的新工作表,文件名与数据一一对应。
提示:若文件夹后续新增文件,只需在总表「数据」→「刷新全部」即可增量合并,无需重复操作。
通道二:VBA 一次性宏(适合老模板或 macOS)
步骤 1 启用开发工具
「文件」→「选项」→「自定义功能区」→右侧勾选「开发工具」。macOS 路径为「WPS Office」→「偏好设置」→「功能区」。勾选后,功能区即出现「开发工具」选项卡,为后续宏操作铺路。
步骤 2 插入宏代码
「开发工具」→「宏」→输入 MergeBooks 并创建,粘贴下列框架(已按 2026 语法兼容):
Sub MergeBooks()
Dim Path As String: Path = ThisWorkbook.Path & "\子文件夹"
Dim CurrentFile As String, WB As Workbook, WS As Worksheet
Dim DestRow As Long: DestRow = 1
Dim FileNameCol As Long: FileNameCol = 1 '假设放在首列
Application.ScreenUpdating = False
CurrentFile = Dir(Path & "\*.xlsx")
Do While CurrentFile <> ""
Set WB = Workbooks.Open(Path & "\" & CurrentFile, ReadOnly:=True)
Set WS = WB.Sheets(1)
With WS.UsedRange
.Offset(1).Resize(.Rows.Count - 1).Copy _
ThisWorkbook.Sheets(1).Cells(DestRow + 1, FileNameCol + 1)
ThisWorkbook.Sheets(1).Range(ThisWorkbook.Sheets(1).Cells(DestRow + 1, FileNameCol), _
ThisWorkbook.Sheets(1).Cells(DestRow + .Rows.Count - 1, FileNameCol)).Value = CurrentFile
End With
DestRow = DestRow + WS.UsedRange.Rows.Count - 1
WB.Close SaveChanges:=False
CurrentFile = Dir()
Loop
Application.ScreenUpdating = True
End Sub
步骤 3 运行与验证
关闭 VBA 编辑器,返回表格,按 Alt+F8 选中 MergeBooks→运行。完成后首列即出现源文件名,右侧为对应数据。若表头重复,可在代码中把 Offset(1) 改为 Offset(2) 或先手动删除多余标题行,即可保持结构整洁。
警告:VBA 宏会永久修改总表,运行前建议「文件」→「备份」→「立即备份」。若公司策略禁用宏,可改用 Power Query。
例外与副作用:何时会失败
- 受保护工作表:Power Query 会提示“无法获取数据”,需先在源文件撤销工作表保护。
- 文件名含英文方括号 []:Power Query 会误判为 Excel 内部链接,导致同一文件被跳过;可批量重命名或在查询编辑器「筛选」步骤手动删除。
- 超过 2 万文件:文件夹枚举速度会明显下降,经验性观察在 1.5 万文件后刷新耗时数十秒;建议按年月拆分子目录,再分次合并。
回退方案:如何撤销错误合并
Power Query 一旦加载,会在「查询 & 连接」窗格留下记录。右键「删除查询」即可连同数据一起清除;若已手工改数据,可「撤销」或利用「版本回溯」(文件→历史版本)恢复至合并前状态。VBA 无历史记录,务必先备份。
性能对比:Power Query 与 VBA 怎么选
| 维度 | Power Query | VBA |
|---|---|---|
| 学习成本 | 图形界面,低 | 需写代码,中高 |
| 增量刷新 | 一键刷新 | 需改代码或二次运行 |
| 跨平台 | Windows 完整,macOS 待上线 | Windows/macOS 均可用 |
| 大文件耐受 | 内部列式压缩,可见提升 | 逐行复制,速度随文件线性增加 |
验证与观测:如何确认文件名正确写入
- 随机抽取 5 行,用 Ctrl+G 定位到源文件,核对文件名与内容是否匹配。
- 在总表新增「校验」列,输入公式 =COUNTIF([Source.Name],[@Source.Name]),结果大于 1 说明同一文件被重复合并,需检查是否多选子目录。
- 若用 VBA,可在宏末加一句 MsgBox "已合并 " & DestRow-1 & " 行数据", vbInformation,即时获得行数反馈。
适用/不适用场景清单
- 适用:财务月结、人事考勤、分校成绩、银行回单、电商订单——需追溯原始凭证且字段一致。
- 不适用:表头差异大、需要横向拼接(列数不同)、或源文件已加密;此类需求应改用「数据透视」多重合并或 Python 脚本。
最佳实践 6 条
- 统一命名规范:用「年月_主体_版本」格式,避免空格与特殊符号。
- 先空文件夹试运行 3 个样本,确认列名与文件名都正确后再全量。
- 把 Power Query 总表存为「只读模板」,团队其他成员另存副本,防止刷新权限冲突。
- 每月归档后,把「查询」复制到新文件再删除旧查询,避免历史垃圾步骤堆积。
- 若文件名含敏感信息,可在查询编辑器加「提取」步骤,仅保留年月部分,兼顾溯源与脱敏。
- 对 500 MB 以上单文件,先在源文件删除空白行,再合并,否则刷新会明显变慢。
FAQ:常见疑问与官方回应
刷新时报“无法从服务器获取数据”怎么办?
多为源文件被占用。关闭所有源工作簿再刷新;若仍失败,检查是否被 OneDrive 锁定,可暂停同步或复制到本地文件夹重新指向。
macOS 版何时能用 Power Query?
截至当前的最新版本尚未正式推送,官方论坛 2026Q1 公告「预计年内灰度」,目前请用 VBA 方案。
文件名列出现重复路径,如何只保留纯文件名?
在查询编辑器选中该列→「转换」→「提取」→「文件名」,即可删除前面路径,仅保留 xxx.xlsx。
合并后格式丢失,日期变数字,如何解决?
在 Power Query 编辑器选中对应列→「数据类型」手动选「日期」;若用 VBA,可在复制后统一设置 NumberFormat = "yyyy-mm-dd"。
总结与下一步行动
WPS 2026 已把「多工作簿汇总并保留源文件名」做成低门槛标准功能:Windows 用户优先用 Power Query,点五次鼠标即可得到可刷新总表;macOS 或老模板可继续用 VBA 宏,十行代码也能稳定运行。先在小样本验证文件名与数据正确性,再全量合并,最后把查询模板设为只读,团队就能在每月月初「一键刷新」完成月报,彻底告别手工复制粘贴。
下一步,你可以:
- 按最佳实践 6 条改造现有文件夹命名规则;
- 把本文 VBA 代码另存为 .bas 模块,供财务同事直接导入;
- 关注 WPS 官方论坛「macOS Power Query」板块,第一时间获取灰度推送通知。
现在就打开 WPS,新建空白表格,跟着上文「最短路径」走一遍,十分钟内你就能看到带文件名的汇总结果。数据血缘清晰了,月底审计再也不用手忙脚乱。