
WPS如何批量提取文件名并生成可点击目录?
为什么“批量提取文件名+可点击目录”仍是高频刚需
2026 年,云盘、IM、邮件附件依旧把“文件散落”问题原封不动地甩回给运营者:一次活动 200 张设计稿、30 份合同、15 版报价单,文件名里还夹着日期和版本号。若手动复制粘贴到 Excel,再一行行加超链接,平均 1 min/条,250 条就耗掉半个人日。更尴尬的是,领导临时让“把最新版标红”,你又得重新跑一遍。本文围绕 WPS 2026 正式版(12.2.0.10389)给出的两条官方可行通道——VBA 与 Power Query——演示如何 3 min 内生成“可点击目录”,并交代何时该放弃 VBA、何时必须上 Power Query,避免“一顿操作猛如虎,最后文件 404”。
功能定位与边界:WPS 没有“一键提取文件名”按钮
首先降低预期:WPS 官方从未在主界面提供“批量提取文件名”入口;所有方案本质都是借道宏(VBA)或查询(Power Query)去调用 Windows 文件系统 API。好处是免费、可二次开发;坏处是第一次启用宏会被安全策略拦截,且 macOS 版因沙箱限制,VBA 无法使用 FileSystemObject,必须改用 PQ。
经验性观察:企业内网若已部署“禁用 VBA”组策略,IT 部门通常允许 Power Query 出站读取本地文件,因为 PQ 不走宏通道,被杀软误报概率更低。换言之,渠道选择不仅是技术问题,更是合规问题。
版本差异速览
| 平台 | 最低可用版本 | VBA 支持 | Power Query 支持 |
|---|---|---|---|
| Windows 桌面 | 11.8 起 | 完整(需手动开宏) | 12.0 起内置 |
| macOS | 12.2 M4 优化版 | 无 FileSystemObject | 完整 |
| Linux 社区版 | 11.1 | 无 | 无 |
| Android/iOS | 移动版 | 无 | 无 |
方案 A:VBA 三秒生成“文件名+超链接”列表
适合Windows 桌面版、文件数 <5 000、后续需要“按按钮就能刷新”的场景。核心思路是借 FileSystemObject 遍历文件夹,把 Name、Path、Size 写进表格,再用 Hyperlinks.Add 一次性加链接。
操作路径(最短)
- 打开 WPS 表格→文件→选项→信任中心→宏设置→启用所有宏(仅本机测试可开,企业环境请选“禁用带通知”)。
- 快捷键 Alt + F11 → 插入模块 → 贴入下方代码。
- 把需要遍历的文件夹路径填在 InputBox,回车即生成新工作表。
完成后,WPS 会自动新建工作表“FileList”,A 列为文件名,B 列为超链接,C 列为字节大小。若文件夹后续新增文件,只需再次运行宏,旧结果会被整表覆盖,实现“刷新”效果。
Dim fso As Object, folder As Object, file As Object, ws As Worksheet, row As Long
Dim pth As String: pth = InputBox("请输入文件夹完整路径")
If Right(pth, 1) <> "\" Then pth = pth & "\"
Set fso = CreateObject("Scripting.FileSystemObject")
Set folder = fso.GetFolder(pth)
Set ws = Worksheets.Add: ws.Name = "FileList"
row = 1
ws.Cells(row, 1) = "文件名": ws.Cells(row, 2) = "超链接": ws.Cells(row, 3) = "大小(B)"
For Each file In folder.Files
row = row + 1
ws.Cells(row, 1) = file.Name
ws.Hyperlinks.Add Anchor:=ws.Cells(row, 2), Address:=file.Path, TextToDisplay:="打开"
ws.Cells(row, 3) = file.Size
Next
MsgBox "共列出 " & row - 1 & " 条文件", vbInformation
End Sub
什么时候该放弃 VBA
出现以下任一信号,建议直接转向 Power Query:1) 文件总量过万,VBA 循环耗时超过 30 s;2) 需跨子文件夹递归,且深度 >3 层;3) 公司组策略禁用宏;4) 你在 macOS 环境。经验性观察:WPS 的 VBA 调试器在 5 000 行以上时本地窗口刷新迟缓,容易误判“假死”。
方案 B:Power Query 无代码递归“子文件夹”
Power Query 在 WPS 12.0 之后直接集成在“数据”选项卡,路径:数据→获取数据→自文件夹。该方案天然支持递归、增量刷新,且不受宏限制,macOS 亦可使用。
操作路径(最短)
- 打开 WPS 表格→数据→获取数据→自文件夹→浏览到目标根目录→确定。
- 在导航器勾选“合并并加载到”,选择“(二进制)”列→确定。
- 在 Power Query 编辑器中,保留 Name、Folder Path、Size、Date modified 四列,删除其余列;若需超链接,新增自定义列:
= "打开",数据类别选“超链接”,然后在高级编辑器里把[Folder Path]&[Name]拼成完整路径赋给Hyperlink.From。 - 关闭并加载至现有工作表→A1。
示例:若你选中的是 \\Design\2026Q2\Banners,PQ 会一次性把 8 层子文件夹里的 1.2 万张 PSD 全部展开,耗时约 15 s(NVMe SSD 环境)。后续只需右键“刷新”,新增文件自动追加,旧行不会重复。
Power Query 的边界
1) 不支持生成“可写入”的超链接——PQ 只能把路径写成文本,需再用公式 =HYPERLINK() 二次转换;2) 网络驱动器若启用 SMB 签名,首次连接会弹 Windows 凭据框,批处理无人值守可能卡住;3) 单表上限 104 万行,超限需先过滤再加载。
小结与选型建议
文件数 <5 000、纯 Windows、需要一键按钮刷新→VBA;跨平台、文件数大、子文件夹深→Power Query。两种方案均可保存为模板,下次直接换路径复用。若你所在组织已禁用宏,却又需要自动刷新,可考虑把 PQ 模板放在 SharePoint 本地同步盘,利用“刷新时自动检测文件更改”实现无人值守。
未来趋势与版本预期
WPS 官方在 2026 春季更新日志中透露,正在内测“批量文件索引”内置函数,预计以 _FN.LISTDIR() 形式放出,支持动态数组溢出。若落地,将无需 VBA 与 PQ 即可在单元格一键返回文件名列表。但该功能仍处灰度,公测通道尚未开放,保守估计正式见面时间不会早于 12.4 版本。
常见问题
宏被禁用时如何临时启用?
文件→选项→信任中心→宏设置→选择“禁用所有宏,并发出通知”,重启 WPS 后打开文件时,顶部会出现黄色安全警告,点击“启用内容”即可单次运行。企业域控环境请联系 IT 将证书加入受信任发布者。
Power Query 刷新时报 “Access to the path is denied” 怎么办?
通常是目标文件夹权限不足或被杀软锁定。尝试以管理员身份启动 WPS,并检查文件夹“安全”选项卡是否给当前用户赋予“读取+执行”权限;若文件位于网络驱动器,先映射为盘符再加载。
macOS 能否用 VBA 生成文件列表?
macOS 版 WPS 无 FileSystemObject,无法直接操作本地文件系统。建议使用 Power Query“自文件夹”功能,或安装 Python 脚本节点,通过 os.listdir 输出 CSV 再导入表格。
文件总量超过 104 万行会怎样?
WPS 表格单表上限 1,048,576 行,超限部分会被截断。解决思路:在 PQ 编辑器里先按日期或前缀筛选,再分多个查询加载到不同工作表;或把结果写入数据模型,用透视表按需展开。
📺 相关视频教程
原来Excel跨表合并多个表格这么简单😭 #excel #办公技巧 #职场干货 #office办公技巧



