乐于分享
好东西不私藏

WPS文档排版救星

WPS文档排版救星

WPS文档排版救星:6个VBA模块,一键搞定标题、正文、表格、图片、页码、眉线

还在为WPS文档排版反复调格式?标题字号、正文行距、表格对齐、图片环绕、页码眉线……这套VBA工具包让你一键完工。


一、痛点

做工程方案、写项目报告、出投标书,最耗时的往往不是内容,而是格式统一——

  • 一级标题用几号字?黑体还是宋体?
  • 正文行距是1.25倍还是1.5倍?
  • 表格里的字总是对不齐
  • 图片一拖就满屏乱跑
  • 每页都要手动加页码和眉线
  • 不同人交上来的文档花花绿绿各不一样

手工调一遍至少半小时,改一版再调半小时。

与其每次都重复劳动,不如写一套代码,一劳永逸。


二、工具包总览

本工具包共6个VBA模块,覆盖文档排版的全部环节,在WPS OfficeMicrosoft Office中均可运行。


三、各模块详解

① 文档格式 —— 标题正文一键到位

直接修改 WPS 内置样式(Heading 1/2/3 + Normal),文档中凡应用了这些样式的段落自动更新。

┌─────────────────────────────────────┐│ 一级标题:三号黑体,居中 ││ 字间距加宽1.5磅 │├─────────────────────────────────────┤│ 二级标题:小三号宋体加粗,居中 ││ 字间距加宽1.5磅 │├─────────────────────────────────────┤│ 三级标题:四号宋体加粗,居中 ││ 字间距加宽1.5磅 │├─────────────────────────────────────┤│ 正文:小四号宋体,1.5倍字高行距 ││ (固定值18pt),首行缩进2字符 │└─────────────────────────────────────┘

适合场景:已有标题样式应用的新文档,一键刷新。

② 文字段落 —— 智能跳过表格和图片

逐段遍历整个文档,自动识别并跳过表格内的段落和纯图片段落,只处理文字段落。

' 跳过表格内段落If para.Range.Information(wdWithInTable) Then GoTo NextPara' 跳过纯图片段落cleanText = Replace(para.Range.Text, Chr(7), ””)If Len(Trim(cleanText)) = 0 Then GoTo NextPara' 设置格式para.Range.Font.Size = 12 ' 小四号para.Range.Font.NameFarEast = ”宋体”para.Range.ParagraphFormat.LineSpacingRule = wdLineSpaceExactlypara.Range.ParagraphFormat.LineSpacing = 18

执行完毕后弹出统计:

文档总段落数:156 段已设置格式 :132 段跳过表格内 :20 段跳过图片段 :4 段

适合场景:从别处粘贴来的文档、多人协作合并后的混乱文档。

③ 表格格式 —— 强迫症福音

智能匹配字号逻辑:

④ 图片格式 —— 告别图片乱跑

处理文档中所有图片(无论是嵌入式还是浮动式):

处理前:图片嵌入文字中,拖拽就乱处理后:┌─────────────────────────┐│ ││ [图片] ← 上下型环绕 ││ 居中显示 ││ ││ 插图1 ← 自动题注 │└─────────────────────────┘

题注格式为”插图1″、”插图2″……五号宋体居中,段前段后自动留间距。

⑤ 页面格式 —— 工程文档的标准配置

专门为工程技术类文档设计:

┌─────────────────────────────────┐│ 项目名称 工程编号 │ ← 眉线(五号宋体,距顶边22mm)│─────────────────────────────────│ ← 横线│ ││ (正文区域) ││ 每行38字,小四号宋体 ││ 1.5倍字高行距 ││ ││ ││─────────────────────────────────││ 1 │ ← 页码(五号宋体居中,距底边18mm)└─────────────────────────────────┘

页边距统一设为 A4 纸四边 2.5cm。

⑥ 格式工具栏 —— 点按钮就能用

运行 ShowFormatToolbar 后,弹出浮动工具栏:

┌─────────────────────────────────────┐│ 📄标题正文 📝文字段落 📊表格格式 ││ 📐页面格式 🖼️图片格式 ││ ─────────────────────────────────── ││ ▶ 一键全执行 ✕ 关闭 │└─────────────────────────────────────┘

每个按钮对应一个模块。点击“一键全执行”以最优顺序完成全部排版:

① 页面格式(设好眉线页码网格)② 标题正文样式③ 文字段落格式④ 表格格式⑤ 图片格式

四、使用方法

第一步:导入模块

1. 打开 WPS → 按 Alt+F11 进入 VBA 编辑器2. 菜单 → 文件 → 导入文件3. 依次选中 6 个 .bas 文件导入4. 关闭编辑器

第二步:执行

推荐方式:调出工具栏

按 Alt+F8 → 选择 ShowFormatToolbar → 运行 → 点击按钮

也可直接执行单个模块

按 Alt+F8 → 选择对应宏名 → 运行


五、核心代码赏析

5.1 正文样式设置

Private Sub SetNormalStyle() With ActiveDocument.Styles(wdStyleNormal).Font .NameFarEast = ”宋体” .NameAscii = ”Times New Roman” .Size = 12 ' 小四号 = 12pt .Spacing = 0 End With With ActiveDocument.Styles(wdStyleNormal).ParagraphFormat .LineSpacingRule = wdLineSpaceExactly .LineSpacing = 18 ' 12pt × 1.5 = 18pt .FirstLineIndent = CentimetersToPoints(0.74) .Alignment = wdAlignParagraphLeft End WithEnd Sub

5.2 表格字号自适应

' 读取正文样式字号,自动降1级Select Case bodySize Case 14: tableSize = 12 ' 四号→小四 Case 12: tableSize = 10.5 ' 小四→五号 Case 10.5: tableSize = 9 ' 五号→小五 Case Else: tableSize = bodySize - 2End Select

5.3 图片遍历与转换

' 倒序遍历InlineShapes,转换后自动从集合移除For i = ActiveDocument.InlineShapes.Count To 1 Step -1 Set ils = ActiveDocument.InlineShapes(i) If ils.Type = wdInlineShapePicture Then Set shp = ils.ConvertToShape shp.WrapFormat.Type = wdWrapTopBottom shp.RelativeHorizontalPosition = wdRelativeHorizontalPositionMargin shp.Left = wdShapeCenter AddCaptionBelow shp, imgCount End IfNext i

5.4 眉线实现

' 页眉插入”项目名称”(左)和”工程编号”(右)headerRange.Text = ”项目名称” & vbTab & ”工程编号”' 右侧制表位rightPos = PageWidth - RightMargin - 0.5cmheaderRange.Paragraphs(1).TabStops.Add _ Position:=rightPos, Alignment:=wdAlignTabRight' 下边框作为眉线headerRange.Paragraphs(1).Borders(wdBorderBottom).LineStyle = wdLineStyleSingle

六、下载

回复关键词

关注本公众号,后台回复 “VBA工具” 即可获取下载链接。

文件清单

📦 WPS排版工具包 v1.0(6个模块,约28KB) ┣ 📜 设置文档格式.bas — 标题+正文样式 ┣ 📜 设置正文格式.bas — 遍历文字段落 ┣ 📜 设置表格格式.bas — 表格格式调整 ┣ 📜 设置图片格式.bas — 图片+题注 ┣ 📜 设置页面格式.bas — 眉线+页码+网格 ┗ 📜 格式工具栏.bas — 可视化工具栏

七、适用场景


  • 如需自定义字号/字体/颜色,直接用记事本打开 .bas 文件修改数值即可
  • 建议导入后将6个 .bas 文件保存在本地,换电脑时重新导入

如果觉得有用,欢迎点赞、在看、转发,让更多被排版折磨的工程师看到!

你在排版中遇到最头疼的问题是什么?欢迎评论区留言。


—— 一份帮你省下排版时间的工具箱,用代码对抗重复劳动