功能定位:为什么“批量拿名称”仍是刚需
在数据仓库、财务报表合并、教育作业收集等场景,工作表名称本身就是元数据。WPS Office 2026 春季版虽然把“灵犀数据”做到一键洞察,却没有提供官方“批量导出工作表名”按钮,于是“函数派”“VBA派”“Power Query派”三足鼎立的局面依旧。理解各派边界,才能在不同平台、不同权限下最快落地。
版本演进:三条技术路线的兴衰与现状
2019 之前,WPS 表格对 VBA 支持度有限,大量用户借助「=GET.WORKBOOK(1)」宏表函数;2021 起,Windows 版 VBA 编辑器完整度追上 Office 2016;2026 春季版则把 Power Query 原生入口放到「数据→获取数据→自文件→自工作簿」,首次在 macOS 端也给出同一级菜单。于是:
- 宏表函数:依旧最轻,但需 .xlsm 格式,手机端无法刷新;
- VBA:兼容性最好,可一键写入新工作表,也可回写自定义属性;
- Power Query:最“无代码”,却要求文件路径固定,且 Linux 版尚未集成。
下文按“决策树→操作→回退”展开,方便你 3 秒选对路线。
决策树:10 秒内锁定最佳方案
提问顺序
- 文件是否允许保存为 .xlsm?
→ 否:走 Power Query(无需宏)。 - 是否需在 Android/iOS 上刷新?
→ 是:走 Power Query(移动端可刷新查询)。 - 是否一次搞定后不再修改?
→ 是:宏表函数最快;否则 VBA 可重复按钮执行。
经验性观察:100 个工作表以内,三种方法耗时都在亚秒级;超过 200 张表时,Power Query 的列类型推断会略微拖慢,可手动关闭「列质量」加速。
路线 A:宏表函数(兼容 2016 至今全端)
操作步骤
- 按 Ctrl+F11 进入「名称管理器」,新建名称:
NameList,引用位置输入:=GET.WORKBOOK(1)&T(NOW())
说明:NOW() 强迫易失性刷新,T() 把数值转空文本,避免污染结果。 - 在任意单元格输入:
=REPLACE(NameList,1,FIND("]",NameList),"")
向下填充直至出现 #N/A,即得纯净工作表名。 - 如需横向展示,可用
TRANSPOSE包裹。
边界与回退
宏表函数只能在「启用宏的工作簿」中保存,若另存为 .xlsx 会丢失定义;手机端打开后公式显示为 #NAME?,需回退到 Power Query 方案。
路线 B:VBA 一键输出(Windows / macOS 通用)
最短路径
Windows:工具→宏→录制宏→停止录制(仅为了开启开发工具)→ 工具→宏→编辑,粘贴以下过程;macOS:菜单栏「宏」→ 编辑 VBA,同理。
Sub ExportSheetNames()
Dim sht As Object, i As Long, arr()
ReDim arr(1 To ThisWorkbook.Sheets.Count, 1 To 1)
For Each sht In ThisWorkbook.Sheets
i = i + 1: arr(i, 1) = sht.Name
Next
Sheets.Add After:=Sheets(Sheets.Count)
Range("A1").Resize(UBound(arr)) = arr
Columns("A:A").AutoFit
End Sub
为什么推荐把结果写到新建表
避免覆盖已有数据;同时新建表默认无格式,后续可接「数据→删除重复项」或「筛选」继续加工。若工作簿受保护,先 ThisWorkbook.Unprotect 再运行。
路线 C:Power Query 无代码(全平台除 Linux)
入口差异
- Windows:数据→获取数据→自文件→自工作簿;
- macOS:同一路径,2026 春季版首次原生集成;
- Android/iOS:打开表格→底栏「数据」→「获取数据」→「从本地工作簿」。
步骤与注意事项
- 选择当前文件(需提前保存在本地,不支持临时缓存文件)。
- 在导航器勾选「选择多项→工作表」,点「转换数据」。
- 在 Power Query 编辑器左侧「查询设置」面板,右击「工作表」字样→「作为连接加载」。
- 主页→高级编辑器,把 M 代码最后一步改为:
= Table.FromColumns({Source[Name]},{"工作表名"}) - 关闭并加载至新工作表即可。
Power Query 的优势是「刷新即更新」,适合母文件频繁增删工作表的场景;但路径硬编码,若文件改名/移动会提示「数据源找不到」,可在「数据→查询→更改源」里批量修正。
平台差异速查表
| 平台 | 宏表函数 | VBA | Power Query |
|---|---|---|---|
| Windows 12.2.x | ✔ | ✔ | ✔ |
| macOS 12.2.x | ✔ | ✔ | ✔ |
| Linux 版(deb) | ✔ | ✔ | ✖(截至当前最新版本) |
| Android / iOS | ✖(刷新失败) | ✖ | ✔(仅刷新,无法编辑查询) |
常见故障与验证方法
故障 1:宏表函数返回 #NAME?
验证:检查是否另存为 .xlsx;回退:另存为 .xlsm 并重新创建名称。
故障 2:VBA 运行时提示「对象不支持」
原因:文件处于「受保护的视图」。验证:功能区显示「启用编辑」按钮;处置:手动点「启用编辑」后重跑宏。
故障 3:Power Query 刷新为空白
经验性观察:文件曾用「加密密码」打开,Power Query 无法提供交互式密码窗口。处置:先取消密码,刷新完毕后再重新加密。
适用 / 不适用场景清单
- 适用:合并预算表、按工作表名做目录、批量打印前检查遗漏、教育场景收集学生作业表。
- 不适用:
- 文件含敏感宏告警策略,IT 部门禁止 .xlsm;
- Linux 离线环境且不能装 Windows 虚拟机;
- 需要每秒级实时刷新(工作表频繁增删),此时建议用第三方数据库记录元数据。
最佳实践 5 条
- 先备份母文件,再跑 VBA 或 Power Query,避免「新建表」意外覆盖。
- 若工作表名含机密信息,导出后记得用「文档检查器」清除隐藏属性。
- 把 VBA 代码存到
Personal.xlsb,可在任意本机文件一键调用,无需重复复制。 - Power Query 结果若需供 Android 查看,请把查询加载为“仅连接”,再另存副本,减少移动端流量。
- 企业合规要求禁用宏时,优先用 Power Query,并留存刷新日志以备审计。
FAQ(结构化数据,利于搜索引擎 FAQ 复合体)
WPS 能否像 Google Sheets 一样用脚本一键列出工作表?
WPS 未开放云端脚本平台,本地可用 VBA 或 Power Query 实现同等效果。
宏表函数在安卓端打不开怎么办?
安卓版不支持宏表函数刷新,建议改用 Power Query 并在桌面端刷新后另存副本。
Power Query 路径移动后如何批量修复?
数据→查询→更改源→浏览新文件→勾选「应用至所有同路径查询」即可。
VBA 会触发公司杀毒软件,如何最小化权限?
把代码保存在受信任位置(文件→选项→信任中心→受信任位置),并对模块加数字签名,可显著降低误报。
导出后如何按名称超链接跳转?
在相邻列用 =HYPERLINK("#"&A1&"!A1","跳转"),即可点击直达对应工作表 A1 单元格。
收尾:下一步行动
读完本文,你已掌握三种可复现路线及其边界。立刻打开手边最复杂的汇总文件,按决策树选一条跑通;把结果贴到目录页,再配一个超链接公式,就能在 5 分钟内做出可刷新、可分享、可审计的「工作表名索引」。下次同事问你“如何批量导出 Excel 工作表名称”,直接把这篇教程甩给他,不用再翻十篇碎片化帖子。
📺 相关视频教程
批量从Excel内导出图片(10秒钟)


