【适用于WPS】一键居中所有图片与表格并将缩进设置为 0 的 VBA 宏
此宏用于快速规范文档格式,目标是在一个操作中将文档内所有图片与表格的对齐方式统一为居中,同时把包含这些对象的段落缩进设为 0,从而解决批量排版时常见的对齐与缩进不一致问题。有人可能会觉得自己设置下也挺方便的,唉,等你有几个大几百页的文档时就知道错了
使用步骤说明如下:在需要处理的文档中按下 Alt + F11 打开 VBA 编辑器,编辑器中左侧项目资源管理器下找到当前文档对应的项目,双击 ThisDocument(即文档对象)以打开代码窗格,然后将宏代码粘贴到窗格中。如果希望把代码放在模块内,也可以通过菜单选择“插入”→“模块”来新建模块并粘贴代码。粘贴完成后在 VBA 编辑器中按 F5 运行宏,或在 Word 中通过“宏”对话框运行相应宏。
Sub 批量处理图片与表格()
' --- 处理嵌入式图片 ---
Dim oInlineShape As InlineShape ' 定义图片对象变量
' 遍历文档中所有嵌入式图片
For Each oInlineShape In ActiveDocument.InlineShapes
' 操作图片所在段落的格式
With oInlineShape.Range.ParagraphFormat
.LineSpacingRule = wdLineSpaceSingle ' 设置单倍行距 (可选)
.CharacterUnitFirstLineIndent = 0 ' 首行缩进0字符
.FirstLineIndent = CentimetersToPoints(0) ' 首行缩进0 (转换为磅)
.Alignment = wdAlignParagraphCenter ' 将图片所在段落居中 (从而图片居中)
End With
Next oInlineShape
' --- 处理表格 ---
Dim oTable As Table ' 定义表格对象变量
Dim oCell As Cell ' 定义单元格对象变量
Dim oPara As Paragraph ' 定义段落对象变量
' 遍历文档中所有表格
For Each oTable In ActiveDocument.Tables
' (1) 将表格对象本身在页面上居中
oTable.Rows.Alignment = wdAlignRowCenter
' (2) 处理表格单元格内部每个段落的格式 (不改变文本对齐方式)
For Each oCell In oTable.Range.Cells ' 遍历表格中的每个单元格
For Each oPara In oCell.Range.Paragraphs ' 遍历单元格中的每个段落
' 操作当前段落的格式
With oPara.Format
' 设置首行缩进为0
.CharacterUnitFirstLineIndent = 0
.FirstLineIndent = 0
' 设置段落间距为0
.SpaceBefore = 0 ' 段前间距0磅
.SpaceAfter = 0 ' 段后间距0磅
' 此处没有设置 .Alignment 属性,
' 因此单元格内文本原有的水平对齐方式 (左对齐、居中、右对齐等) 将保持不变。
' 如有需要,可设置行距 (可选)
' .LineSpacingRule = wdLineSpaceSingle
End With
Next oPara ' 处理单元格内的下一个段落
Next oCell ' 处理表格内的下一个单元格
Next oTable ' 处理文档中的下一个表格
' 完成后给出提示信息
MsgBox ("提示:" & vbCrLf & _
"1. 所有嵌入式图片已居中,其所在段落首行缩进已设置为0。" & vbCrLf & _
"2. 所有表格已在页面上居中。" & vbCrLf & _
"3. 表格单元格内所有文本段落已设置为:无首行缩进、段前间距0磅、段后间距0磅。" & vbCrLf & _
"4. 表格单元格内文本的原有水平对齐方式已保持不变。")
End Sub

浙公网安备 33010602011771号