WPS如何批量提取Excel工作表名称到一列?
WPS批量提取Excel工作表名称到一列的三种官方方案:公式、宏、Power Query,含平台差异与取舍建议。

功能定位:为什么要把工作表名称“扫”到一列
在汇总月报、合并预算或做目录索引时,批量提取工作表名称能把分散的 Sheet 元数据变成可排序、可筛选的清单,避免手工复制带来的遗漏与笔误。WPS 表格 2026 版仍保留与 Excel 高度兼容的函数、VBA 及 Power Query 接口,因此同一需求存在三条官方路径:公式、宏、Power Query。理解它们各自的性能成本与维护复杂度,是选型的第一步。
方案一:公式法——零代码、即时刷新
操作路径(桌面端)
- 新建“目录”工作表 → 选中 A1。
- 在公式栏输入:
=LET(s,GET.WORKBOOK(1),INDEX(s,ROW())),按 Ctrl+Shift+Enter 结束(数组模式)。 - 向下填充至出现 #REF! 为止,再过滤掉错误值即可。
提示:GET.WORKBOOK 为宏表函数,文件需保存为.et或启用宏的.xlsm,否则函数返回 #NAME?。
移动端差异
WPS Android/iOS 目前(截至当前的最新版本)不支持输入数组公式,GET.WORKBOOK 会被当成无效名称。若必须在手机端刷新,可改用“定义名称”+“INDEX”组合,但编辑体验较差,建议回桌面端完成一次性提取。
性能与取舍
公式法零代码、零触发器,适合Sheet 数量 < 100 且文件名不会频繁变动的轻量场景;数组公式在 200+ Sheet 的财务模型中会出现亚秒级刷新延迟(经验性观察:CPU 占用短时抬升约 1 核 30%)。若后续需要动态增删 Sheet,可配合 FILTER 函数自动收缩列表,但文件体积会随数组区域扩大而线性增加。
方案二:宏法——一次写入、永久脱公式
最短路径(Windows 版)
- Alt+F8 → 输入宏名
ListSheets→“创建”。 - 在 VBA 编辑器粘贴以下代码:
Sub ListSheets()
Dim i As Integer
For i = 1 To Sheets.Count
Sheets("目录").Cells(i, 1).Value = Sheets(i).Name
Next i
End Sub
- 关闭 VBA 编辑器 → Alt+F8 运行即可。
macOS & Linux 注意
2026-03-28 起,Mac 与 Linux 版已植入 VBA 兼容层,但部分对象模型仍缺失 Sheets.Count 的隐式转换。若遇到“类型不匹配”,可显式声明 Dim sht As Object 再循环。验证方法:在立即窗口输入 ?TypeName(Sheets(1)),返回“Worksheet”即正常。
何时不该用宏
若文件需上传至金山云协作且组织策略禁用宏,则宏法会导致在线协作失败(云端自动屏蔽 VBA)。此时可改用 Power Query 或无宏公式,避免触发合规拦截。
方案三:Power Query——无宏、可刷新、跨簿聚合
入口与步骤(桌面端)
- 数据 → 获取数据 → 自其他源 → 空白查询。
- 在公式栏输入:
= Excel.CurrentWorkbook(){[Name="Name"]}[Content]{0}[Column1]会报错,正确写法是:
= Table.FromList(
Excel.CurrentWorkbook(){[Kind="Sheet"]}[Name],
each [Name = _]
)
- 关闭并加载到“目录”工作表,即可得到随 Sheet 增删而一键刷新的列表。
警告:Power Query 在 WPS 2026 版仍标记为“实验功能”,若菜单呈灰色,需在 设置-实验室功能 勾选“启用 Power Query 预览”,并重启客户端。
性能阈值
经验性观察:Sheet 数量 500+ 时,首次加载耗时约数十秒,内存占用提升 200 MB 左右;再次刷新仅同步增量,耗时降至亚秒级。对需要跨工作簿聚合(例如把 30 个月报文件的全部 Sheet 名扫到一张总表)的场景,Power Query 可直接追加文件夹路径,省去多次打开文件的等待。
三方案对比速查表
| 维度 | 公式法 | 宏法 | Power Query |
|---|---|---|---|
| 是否需启用宏 | 是(宏表函数) | 是 | 否 |
| 移动端可刷新 | 否 | 否 | 否(需桌面端) |
| 刷新耗时(100 Sheet) | 亚秒级 | 毫秒级 | 首次数秒,后续亚秒 |
| 文件体积增量 | 随数组区域线性增加 | 写入值后无公式,体积最小 | 查询定义 <10 KB |
| 协作合规 | 受限(宏表函数) | 易触发禁用 | 最友好 |
常见故障与验证方法
现象:公式返回 #NAME?
可能原因:①文件存为 .xlsx 无宏格式;②函数名拼写错误。验证:另存为 .xlsm 后重新计算,若故障消失即确认原因①。
现象:宏被金山云协作自动删除
处置:在协作设置中关闭“上传前清理 VBA”,或改用 Power Query 方案。可复现指标:上传前后用 7-Zip 打开文件,观察 xl/vbaProject.bin 是否存在。
现象:Power Query 刷新提示 “Access to the path is denied”
原因:文件位于只读网络盘。验证:复制到本地 Temp 目录再刷新,若正常即确认权限问题。
适用/不适用场景清单
- 适用:预算模板 50±Sheet,每月新增 3-5 张;需要在线协作且组织禁用宏。
- 不适用:需在手机端随时刷新;Sheet 数量 1000+ 且对首次加载时长敏感;文件需提交给外部审计且对方禁用任何宏表函数。
最佳实践 5 条
- 先评估 Sheet 数量:≤100 优先公式法;需脱公式存档则跑一次宏后删代码。
- 任何含宏方案,在文件名后缀加
_macro提醒协作方。 - Power Query 刷新前,用“保留查询但不加载”做性能空跑,确认无多余列。
- 若目录工作表被保护,记得在宏开头加
Sheets("目录").Unprotect,否则写入失败。 - 定期用“文档检查器”清理隐藏宏表,避免后续版本升级时触发兼容警告。
FAQ(使用 FAQPage Schema)
WPS 移动版能否直接提取工作表名称?
目前移动客户端不支持数组公式与 VBA,只能通过桌面端完成提取后同步至云端查看。
Power Query 刷新会不会把公式覆盖掉?
查询结果会以值形式写入,不会保留原公式;如需保留,需把结果输出到新工作簿。
宏方案能否在 Linux 版正常运行?
2026 版 Linux 已引入 VBA 兼容层,但对象模型略有差异,需显式声明对象类型,否则可能报“类型不匹配”。
收尾:下一步行动
批量提取工作表名称看似小众,却是自动化报表的第一步。先根据 Sheet 规模与协作限制选定方案,再在小范围副本验证刷新耗时与文件体积,确认无误后推广到生产文件。若后续需反向跳转(点击目录自动激活对应 Sheet),可在宏法或公式法外加 HYPERLINK("#'"&A1&"'!A1","跳转"),把目录升级为导航面板,实现真正的“一键穿梭”。