Word批量格式统一工具(VBA宏版)
技能概述
本技能提供一套完整的 VBA 宏代码及操作指南,帮助您在 Microsoft Word 中批量处理多个文档的格式。只需选择目标文件夹,宏将自动遍历所有 .docx 文件,统一设置页面、字体、段落、标题样式等,极大提升排版效率。
适用场景
- 行政、文秘、编辑人员需要统一大批量文档格式
- 项目经理整理标书、合同等标准化文件
- 研发、质量人员需要定期输出格式一致的报告
前置知识
- 熟悉 Word 基本操作(打开、保存)
- 了解文件路径选择
- 无需编程基础,按步骤操作即可
使用步骤
1. 启用 Word 宏功能
- 打开 Word,点击 文件 → 选项 → 信任中心 → 信任中心设置 → 宏设置。
- 选择 “启用所有宏”(测试环境),并勾选 “信任对 VBA 工程对象模型的访问”。
- 点击“确定”保存。
2. 插入宏模块
- 按
Alt + F11打开 VBA 编辑器。 - 在左侧“工程资源管理器”中,右键点击 Normal 或当前文档项目 → 插入 → 模块。
- 将下方完整代码复制粘贴到模块中。
3. 复制核心代码
Sub BatchFormatUnify()
Dim folderPath As String
Dim file As String
Dim doc As Document
Dim folderDialog As FileDialog
Dim i As Long
Set folderDialog = Application.FileDialog(msoFileDialogFolderPicker)
With folderDialog
.Title = "请选择包含Word文档的文件夹"
.AllowMultiSelect = False
If .Show <> -1 Then Exit Sub
folderPath = .SelectedItems(1)
End With
If Right(folderPath, 1) <> "\" Then folderPath = folderPath & "\"
file = Dir(folderPath & "*.docx")
i = 0
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Do While file <> ""
Set doc = Documents.Open(folderPath & file, AddToRecentFiles:=False, Visible:=False)
Call UnifyFormat(doc)
doc.Save
doc.Close
i = i + 1
file = Dir
Loop
Application.ScreenUpdating = True
Application.DisplayAlerts = True
MsgBox "已完成 " & i & " 个文档的格式统一!", vbInformation
End Sub
Sub UnifyFormat(doc As Document)
With doc
' 页面设置(A4,页边距上下2.54cm,左右3.17cm)
With .PageSetup
.PaperSize = wdPaperA4
.TopMargin = CentimetersToPoints(2.54)
.BottomMargin = CentimetersToPoints(2.54)
.LeftMargin = CentimetersToPoints(3.17)
.RightMargin = CentimetersToPoints(3.17)
End With
' 遍历所有段落
Dim para As Paragraph
For Each para In .Paragraphs
para.Range.Font.Reset
With para
.Alignment = wdAlignParagraphLeft
.LineSpacingRule = wdLineSpace1pt5
.FirstLineIndent = CentimetersToPoints(0.74)
.SpaceBefore = 0
.SpaceAfter = 0
' 标题1样式居中、黑体、二号
If .Style = "标题 1" Or .Style = "Heading 1" Then
.Alignment = wdAlignParagraphCenter
.Range.Font.Name = "黑体"
.Range.Font.Size = 22
End If
' 正文样式宋体、小四
If .Style = "正文" Or .Style = "Normal" Then
.Range.Font.Name = "宋体"
.Range.Font.Size = 12
End If
End With
Next para
.Fields.Update
End With
End Sub
## 支付宝付费改造契约(PAYSKILL)
本技能为付费技能(PAYSKILL)。调用遵循支付宝 AI 生意画像契约,由平台调度层执行 `probe` → `pay` → `complete` → `ack` 流程:
1. **probe(探测)**:平台调用前先探测是否已持有本技能的支付宝有效订阅 / 付费凭证。已付费则直接放行。
2. **402 Payment-Needed**:未付费时,脚本向标准输出返回 HTTP 状态 `402` 与 `Payment-Needed` 标记,提示用户通过**支付宝**完成付费(`pay`),平台据此唤起付费页。
3. **complete(扣费确认)**:用户在支付宝完成扣费后,平台下发 `Payment-Proof`(付费凭证)。
4. **ack(验签放行)**:平台携带 `Payment-Proof` 重试本次调用;`scripts/payment_gate.py` 验签该凭证,确认有效后放行主流程。
**订阅持久化与幂等:**
- 付费状态缓存在本地 `.pay_cache/state.json`,避免每次调用重复付费(订阅持久化)。
- 同一 `Payment-Proof` 在 **24h 幂等窗口**内仅生效一次,避免重复扣费。
**现金流改造后的调用套路:**
```text
用户调用 → 平台 probe →
未付费:下发 402 Payment-Needed → 支付宝 pay → complete → 下发 Payment-Proof
已付费/携带 Proof:脚本 ack 验签 → 放行主流程
> 本契约由 SkillHUB 平台调度层解析,脚本本地仅处理 402 / 验签 / 持久化 三环节;付费本体交给支付宝。
支付宝 AI 按量付费(Machine Pay / A2M)改造说明
本 Skill 已按支付宝官方 A2M 协议改造为 Pay Skill,付费闸口位于 scripts/payment_gate.py,统一调用云端计费服务 https://pay.pembroli.cn/api/resource。
付费流程
- 未付费调用时,服务端返回 HTTP 402 +
Payment-Needed头,携带金额、商户、订单号及 RSA2 签名。 - 买家侧
payment_gate.py收到 402 后引导用户完成支付,平台回传Payment-Proof。 - 客户端携带
Payment-Proof重试资源端点。
验付调用
服务端收到 Payment-Proof 后,调用支付宝验付接口(alipay.aipay.agent.payment.verify)核验凭证有效性(trade_no、out_trade_no、active 状态),验证失败返回 400,验证通过才进入资源发放。
履约确认
资源发放成功后,服务端异步调用履约确认接口(alipay.aipay.agent.fulfillment.confirm,trade_no)回执,标记本笔订单已履约;并按 out_trade_no 做幂等,重复请求直接返回已缓存结果,杜绝重复收费。
幂等与缓存
买家侧按 slug 本地缓存 Payment-Proof(24h TTL),有效期内免重复支付;服务端按订单号幂等,保证同一笔订单只履约一次。
```