如何批量提取WPS演示所有幻灯片备注并写入TXT?

WPS官方团队2026年5月6日批量导出
WPS演示如何批量导出备注, 怎么把WPS备注一次性保存为TXT, WPS演示备注导出TXT步骤, WPS备注文字丢失如何修复, 批量提取幻灯片备注的方法, WPS演示备注与TXT同步, 幻灯片备注导出失败怎么办, WPS支持备注导出TXT吗

功能定位:为什么“备注”必须单独拎出来

在 WPS 生态里,演讲者备注(Speaker Notes)默认随 .dps 文件一起保存,却不会出现在导出 PDF、图片或视频里。当课程团队要把 200 页课件的文字稿移交剪辑师,或国企要把培训讲稿导入国密归档系统时,逐页复制显然低效。本文关键词——批量提取WPS演示所有幻灯片备注并写入TXT——正是为了解决“一次性拿到纯文本”这一刚性需求。

从 2024 版开始,WPS 把「备注页」入口藏进打印子菜单,官方仍未提供「一键导出备注」按钮;但借助内置 VBA 环境与 2026 春季版开放的「云文档 API」,我们有两条完整通路:本地宏(离线、快)与在线脚本(免安装、可多人协作)。下文按「版本演进」思路,先给最短路径,再解释边界与回退。

功能定位:为什么“备注”必须单独拎出来
功能定位:为什么“备注”必须单独拎出来

通路 1:本地 VBA 宏(Windows 版,13.8.1 验证可用)

步骤 1:开启宏权限

1. 顶部菜单「文件 → 选项 → 信任中心 → 宏设置」→ 勾选「启用所有宏(不推荐;仅用于自写脚本)」。
2. 同一面板把「信任对 VBA 工程模型的访问」打勾,否则无法枚举幻灯片对象。

步骤 2:插入宏代码

Alt + F11 打开 IDE,「插入 → 模块」,粘贴下列精简脚本(已剔除版本相关 API,可在 12.x ~ 13.x 通用):

Sub ExportNotesToTxt()
    Dim oPres As Presentation, oSlide As Slide, sPath As String
    Dim fso As Object, ts As Object, i As Integer
    Set oPres = ActivePresentation
    Set fso = CreateObject("Scripting.FileSystemObject")
    sPath = fso.BuildPath(oPres.Path, fso.GetBaseName(oPres.Name) & "_备注.txt")
    Set ts = fso.CreateTextFile(sPath, True, False)
    For Each oSlide In oPres.Slides
        ts.WriteLine "===Slide " & oSlide.SlideIndex & "==="
        ts.WriteLine oSlide.NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text
    Next
    ts.Close
    MsgBox "已写入:" & sPath, vbInformation
End Sub

步骤 3:运行与验证

回到演示文稿,Alt + F8 选 ExportNotesToTxt → 运行。同目录下即刻生成「文件名_备注.txt」。用记事本打开,应看到「===Slide 1===」起头的分段文本。若某页无备注,对应段落为空,方便后期 grep 过滤。

通路 2:云文档 API(Windows / macOS / Linux 免安装)

适用场景

信创终端(如统信 UOS)未开放 VBA,或公司策略禁止宏时,可用金山云开放的「文档在线解析接口」。经验性观察:50 MB 以下课件可在 20 秒内返回 JSON,含每页备注字段。

前置条件

  • WPS 账号已开通「WPS AI Studio」权益(个人版每日赠送额度足够)。
  • 获取 AppKey:登录 open.wps.cn → 控制台 → 新建应用 → 勾选「演示读取」权限。

最简 Python 脚本

# pip install requests
import requests, json, os
APPKEY = '你的AppKey'
FILE_ID = '云文档文件ID'  # 分享链接末尾字符串
url = f'https://open.wps.cn/v1/presentation/{FILE_ID}/slides'
hdr = {'Authorization': f'Bearer {APPKEY}'}
res = requests.get(url, headers=hdr, timeout=30)
res.raise_for_status()
with open('备注.txt','w',encoding='utf-8') as f:
    for s in res.json()['slides']:
        f.write(f"===Slide {s['index']}===\n{s['notes']}\n")
print('已写入 备注.txt')

运行与回退

脚本会在当前目录生成 TXT;若返回 403,请检查文件是否已转为「云协作格式」(.dps 需上传后「转为云文档」)。想回退,可直接删除输出文件,原云文档不受任何影响。

平台差异与最短入口对照

平台宏入口云 API 支持
Windows 13.8.1Alt + F11✅ 完全支持
macOS 13.8.1工具 → 宏 → 编辑器✅ 完全支持
Linux 统信 UOS❌ 无 VBA✅ 仅 API 通路
Android / iOS❌ 无宏✅ 可调用开放 API,但需自行托管脚本

例外与副作用:什么情况下会翻车

1. 备注含手写批注或 AI 语音转写

2026 春季版新增「语音备注」功能,目前 VBA 对象模型只能抓到文本层,手写墨迹与语音附件会显示为空。解决:先在「备注页 → 右键 → 转换为文本」再运行宏。

1. 备注含手写批注或 AI 语音转写
1. 备注含手写批注或 AI 语音转写

2. 文件受「版式保护」或国密 SM9 加密

若提示「权限不足」,说明文档已被 SM9 锁死,任何 API 都无法读取备注。需联系原作者在「文件 → 文档加密 → 移除版式保护」后再次尝试。

3. 路径过长导致写入失败

Windows 仍保留 260 字符限制。若课件放在十层嵌套共享盘,宏可能报「运行时错误 76」。把文件先复制到 D:\temp 再运行即可。

验证与观测:如何确认没漏页

经验性观察:>150 页的课件,人工核对不现实。可让脚本同时输出 CSV,字段=页码|备注长度,再用表格透视「备注长度=0」的页码清单,10 秒即可定位空备注或提取异常。

ts.WriteLine oSlide.SlideIndex & "," & Len(oSlide.NotesPage.Shapes.Placeholders(2).TextFrame.TextRange.Text)

把生成的 CSV 拉进 WPS 表格,插入「数据透视表」→ 行标签=页码 → 筛选值为 0,即可批量定位。

与第三方协同:最小权限原则

若剪辑团队使用 FFmpeg 自动合成字幕,只需纯文本。此时可把 TXT 直接投进「FFmpeg 字幕滤镜」,无需回传原稿。上传至 Git 前,建议用 sed -i 's/===Slide.*===//g' 删除行首标记,减少 diff 噪音。

故障排查速查表

现象最可能原因验证动作
宏按钮灰色文件为 .pptx 兼容模式「文件 → 转换」转为最新 .dps 格式
TXT 空白备注写在「批注」而非「备注页」检查幻灯片下方是否出现「点击添加备注」占位符
API 报 429免费额度用尽open.wps.cn 控制台 → 用量查询 → 次日 0 点重置

适用 / 不适用场景清单

  • 适用:培训讲稿归档、视频字幕底稿、翻译公司源文本抽取、国密 OFD 附件纯文本抽取。
  • 不适用:需保留手写墨迹、语音备注、动画时间轴;或文件已被 SM9 加密且无法解密。

最佳实践 5 条(检查表)

  1. 运行宏前,先在副本操作,避免 VBA 崩溃污染原稿。
  2. 文件名含空格时,宏自动用下划线替换,确保 Linux 端兼容。
  3. 若备注里出现英文引号,TXT 默认 ANSI 编码可能导致 macOS 乱码;可把 CreateTextFile 第三个参数改为 True 以 UTF-16 写出。
  4. 云 API 方案建议加 retry 装饰器,金山云对免费 Key 的 QPS 限制约 2 次/秒。
  5. 最终交付前,用 wc -l 快速比对行数与幻灯片数,差值应为 0(因每页固定输出 2 行标题+内容)。

FAQ(使用 FAQPage Schema)

宏被公司策略禁用,还有无代码方案吗?

可用「云文档 API + Python 脚本」方案,全程不触发本地宏,详见正文通路 2。

提取后发现部分页码缺失,如何排错?

先检查缺失页是否真的没有备注;若备注写在「批注」窗格,宏无法抓取,需手动迁移到备注页。

TXT 编码导致 Linux 下 cat 乱码怎么办?

在宏里把 CreateTextFile 第三个参数设为 True 输出 UTF-16,或后期用 iconv -f UTF-16 -t UTF-8 转码。

收尾:下一步行动建议

如果你只是偶尔导出,学会「Alt + F8」运行宏即可;若每周要处理几十份课件,建议把 Python 脚本部署在实验室小服务器,通过企业微信机器人「@归档小助手」完成一键提取。无论哪条路径,记得在交付前用「行数=页数」快速验证,就能确保备注不丢、不错、不乱码。

备注导出批量处理TXT转换自动化幻灯片