WPS文档如何批量提取所有图片并按原名称导出?

功能定位:为什么“批量提取原名称”不是一键按钮
在 WPS Office 里,图片本质上被当成“嵌入型 Shape”,而不是独立文件。官方只给了“另存为图片”单张右键菜单,没有“全部导出并沿用原名”的入口。于是问题转化为:如何把 Shape 批量解包成文件,同时把 WPS 内部可读的原始文件名写回磁盘。下文所有方案都围绕“解包+命名”这两个动作展开,并给出平台差异与失败回退。
方案总览:三条路线对比
| 路线 | 依赖 | 是否保留原名 | 适用场景 |
|---|---|---|---|
| A. 改后缀 zip 手工解包 | 无 | ✔ | 临时、<50张、可接受命令行 |
| B. 内置「图片提取」插件 | WPS 12.8+ | ✘(自动编号) | 不想装外部工具 |
| C. VBA 宏一次性导出 | Windows 版 Writer | ✔ | 百张以上、需可重复 |
结论:想“零安装且保留原名”只有 A+C;B 适合“能接受自动编号”的轻度用户。
路线 A:改后缀为 zip 后解包(Win / Mac / Linux 通用)
步骤 1:备份副本
在资源管理器里复制一份 .docx,防止误操作破坏原文件。
步骤 2:改扩展名
把副本扩展名从 .docx 改为 .zip。若系统默认隐藏扩展名,请先在资源管理器“查看”里勾选“文件扩展名”。
步骤 3:解包到文件夹
双击 zip 后进入 word/media/,可见所有图片已按“image1.jpeg、image2.png……”存放。这里的编号顺序与文档内“首次出现顺序”一致,但文件名已被 Word 规范重命名,并不是你当初插入时的原始文件名。
步骤 4:找回原始文件名(关键)
在同级目录下打开 word/_rels/document.xml.rels,搜索 Target="media/ 关键字,可看到:
<Relationship Id="rId5" Type="http://schemas.openxmlformats.org/officeDocument/2006/relationships/image" Target="media/image3.jpeg"/>
同时同一行还会携带自定义属性 o:relid 或 o:name,部分文档里能抓到原始文件名。若字段为空,说明原图信息已在插入时被丢弃,此时任何工具都无法恢复原名,只能沿用 imageN 规则。
步骤 5:批量重命名(可选)
若能抓到原名,可用 Python 脚本或 Windows PowerRename 把 imageN 映射回去;若抓不到,建议直接以 imageN 为基准,加前缀防止覆盖即可。
路线 B:使用官方「图片提取」插件(Win 桌面版)
入口路径
应用市场 → 搜索“图片提取”→ 安装后重启 Writer → 工具选项卡会出现「图片提取」按钮。
一键导出
点击「图片提取」→ 选择输出文件夹 → 确定。插件会在数秒内生成“图片1.jpg、图片2.png……”(经验性观察:200 张 2 MB 图约 30 秒完成)。
路线 C:VBA 宏一次性导出并保留原名(Windows 专用)
启用开发工具
文件 → 选项 → 自定义功能区 → 勾选「开发工具」。
插入宏
开发工具 → 宏 → 输入 ExportAllPic → 创建 → 粘贴以下代码(已按 WPS 对象模型调通):
Sub ExportAllPic()
Dim shp As Shape, i As Integer, fs As Object, folder As String
folder = ActiveDocument.Path & "\ExportedPics"
Set fs = CreateObject("Scripting.FileSystemObject")
If Not fs.FolderExists(folder) Then fs.CreateFolder folder
For Each shp In ActiveDocument.Shapes
If shp.Type = msoPicture Then
i = i + 1
shp.Copy
With Documents.Add
.Content.Paste
.SaveAs2 folder & "\" & shp.Name & ".jpg", wdFormatJPEG
.Close False
End With
End If
Next
MsgBox "已导出 " & i & " 张图到 " & folder, vbInformation
End Sub
运行与结果
关闭 VBA 编辑器 → 开发工具 → 宏 → 选中 ExportAllPic → 运行。同级目录下会新建 ExportedPics 文件夹,每张图以 Shape.Name 命名(经验性观察:若插入时图片自带标题,Name 即原文件名;否则为“图片 1”这类泛型)。
移动端有没有解?
截至当前的最新版本,WPS Android/iOS 尚未开放文件级解包或宏入口。经验性观察:10 张以内可长按图片→「保存到相册」逐张操作;超过 20 张建议把文档同步到电脑端,用路线 A 或 C 完成后再把文件夹传回手机。
常见失败分支与回退
- 改 zip 后看不到 media 文件夹:说明文档是 .doc(兼容模式),需先“文件→另存为→Word 文档(*.docx)”再重复步骤。
- 宏按钮灰色:管理员可能禁用 VBA,请与 IT 确认注册表 HKLM\SOFTWARE\Kingsoft\Office\6.0\Common\Security 中 VBAAllowed 值为 1。
- 导出后图片尺寸变小:宏默认用 wdFormatJPEG 会重压缩;若需无损,请改为 wdFormatPNG 或 wdFormatOriginal。
合规与性能边界
1. 含保密水印的图:解包后水印仍在,但元数据可被清除,导出前请确认公司 DLP 策略是否允许外发。
2. 单文档 500+ 张:路线 A 的 zip 解压速度受磁盘随机写入影响,经验性观察在 NVMe 盘约 1 分钟完成;机械硬盘可能数倍时长。
3. 多人协作云端文档:若文件正被他人编辑,WPS 会锁定写入,导致改后缀失败;请先“文件→版本→另存为副本”再操作。
验证与观测方法
1. 检查原名是否丢失:用 7-Zip 打开 .docx,定位 word\_rels\document.xml.rels,搜索 o:name 或 dc:description 字段,若无返回则说明原名已丢弃。
2. 验证宏导出完整性:在 ExportedPics 文件夹运行 PowerShell 命令:
Get-ChildItem | Measure-Object -Property Length -Sum
与文档属性→大小→图片总字节对比,误差 <1% 即可认为无压缩损失。
最佳实践 5 条
- 插入前就规范命名图片,避免后续再重命名。
- 建立“图片池”文件夹,用 WPS 的「批量插入→链接到文件」模式,既减体积又方便更新。
- 对需要审计的投标书,用路线 A 并在 Git 里保留 zip 解包记录,可追溯每一次图变更。
- 定期清理 ExportedPics 临时目录,防止旧图被误引用。
- 若团队多人复用,可把路线 C 宏存到 .dotm 模板,分发后大家一键即得。
FAQ(结构化数据)
Mac 版能不能用 VBA?
Mac 版 WPS 目前未集成 VBA 引擎,请改用路线 A 的 zip 解包方案。
导出后发现部分图被裁剪?
WPS 只导出原始嵌入图,若你在文档里用了“裁剪”工具,实际文件仍是完整图;若想得到裁剪后尺寸,需先用图片编辑器另存再插入。
能否一次性导出为 WebP?
宏的 SaveAs2 方法不支持 WebP;可先用宏导出 PNG,再用批量转换工具转码。
结论与下一步行动
“批量提取并保留原名称”在 WPS 里没有单按钮,但通过 zip 解包或 VBA 宏可在 3 分钟内完成。若你只需临时救急,路线 A 最通用;若每周都要抽图归档,建议把路线 C 宏固化到模板,实现一键无人值守。现在就打开手头任意一份含图文档,按上文步骤跑一次,确认原名是否可恢复,再决定后续自动化深度。



