WPS宏使用:一键批量调整图片与表格格式

文章目录

序言

在之前的文档《Markdown转换为Word:Pandoc模板使用指南》中,介绍了如何使用Pandoc将Markdown文档转换为word文档,但是使用默认模板并不能将文档中的图片和表格转换为我们希望的格式。

如何批量调整这些表格和图片?手动逐一手动调整不仅效率低下,还容易出错,也不符合我们提高效率的初衷。最终发现有两条路径可以实现我们的需求:一、使用宏批量调整文档中的表格和图片格式;二、使用lua过滤器,在将markdown转换为文档时统一设置。

本文将介绍如何利用WPS中的宏功能,快速实现图片和表格格式的批量调整。

一、什么是宏,为什么要使用宏?

宏是一种自动化完成重复任务的功能,它通过录制或编写VBA(Visual Basic for Applications)代码,将多个操作步骤组合成一个命令,从而实现批量处理。

使用宏处理图片和表格格式的优势:

  • 大大提高效率:几分钟内完成数小时的手动操作
  • 保证格式统一:避免人为操作导致的格式不一致
  • 可重复使用:一次编写,多次使用,适合标准化文档制作

二、批量调整图片格式的宏

方法1:使用宏代码统一图片尺寸

WPS文档中的图片默认是嵌入型版式,可以通过以下宏代码批量调整:

vb 复制代码
Sub BatchResizePics()
    ' 批量调整图片大小
    Dim img As InlineShape
    Dim n As Integer
    
    On Error Resume Next ' 忽略可能出现的错误
    
    For n = 1 To ActiveDocument.InlineShapes.Count
        Set img = ActiveDocument.InlineShapes(n)
        img.Height = 5 * 28.35  ' 设置图片高度为5cm(1cm≈28.35像素)
        img.Width = 7 * 28.35   ' 设置图片宽度为7cm
    Next n
    
    MsgBox "已完成所有图片的尺寸调整!"
End Sub

关键参数说明:

  • Height和Width属性:控制图片的高度和宽度
  • 28.35是厘米到像素的转换系数(1cm≈28.35像素)
  • 可根据实际需要调整数值

方法2:先调整图片版式再统一尺寸

如果文档中的图片版式不一致(嵌入型、四周型等),需要先统一版式,以下宏代码可以处理所有类型的图片:

vb 复制代码
Sub BatchResizeAllShapes()
    ' 批量调整所有图形对象(包括不同版式的图片)
    Dim shape As Shape
    Dim inlineShape As InlineShape
    
    ' 处理嵌入式图片
    For Each inlineShape In ActiveDocument.InlineShapes
        inlineShape.LockAspectRatio = False ' 不锁定纵横比
        inlineShape.Height = 200    ' 高度设为200像素
        inlineShape.Width = 300     ' 宽度设为300像素
    Next inlineShape
    
    ' 处理浮动式图片
    For Each shape In ActiveDocument.Shapes
        shape.LockAspectRatio = False ' 不锁定纵横比
        shape.Height = 200    ' 高度设为200像素
        shape.Width = 300     ' 宽度设为300像素
    Next shape
    
    MsgBox "已完成所有图片版式和尺寸的统一调整!"
End Sub

三、批量调整表格格式的宏

方法1:统一所有表格的样式

以下宏代码可以批量设置文档中所有表格的格式:

vb 复制代码
Sub SetAllTablesProperties()

    On Error Resume Next
    
    Dim oTable As Table
    Dim oDoc As Document
    Dim i As Integer
    
    Set oDoc = ActiveDocument
    
    ' 遍历文档中的每一个表格
    For Each oTable In oDoc.Tables
        
        With oTable
            ' ====== 1. 表格对齐方式 ======
            .Rows.Alignment = wdAlignRowLeft
            .LeftIndent = 0
            .AllowAutoFit = True
            .PreferredWidthType = wdPreferredWidthAuto
            
            ' ====== 2. 单元格对齐方式 ======
            .Range.Cells.VerticalAlignment = wdCellAlignVerticalCenter
            
            ' ====== 3. 设置表格第一行字体加粗 ======
            If .Rows.Count >= 1 Then
                With .Rows(1).Range.Font
                    .Bold = True
                    .Name = "宋体"
                    .NameFarEast = "宋体"
                    .NameAscii = "Times New Roman"
                    .NameOther = "Times New Roman"
                    .Size = 10.5
                End With
                
                ' 可选:设置第一行底纹(浅灰色)
                '.Rows(1).Shading.BackgroundPatternColor = wdColorGray15
            End If
            
            ' ====== 4. 设置表格其他行的字体(非加粗) ======
            If .Rows.Count > 1 Then
                For i = 2 To .Rows.Count
                    With .Rows(i).Range.Font
                        .Bold = False
                        .Name = "宋体"
                        .NameFarEast = "宋体"
                        .NameAscii = "Times New Roman"
                        .NameOther = "Times New Roman"
                        .Size = 10.5
                    End With
                Next i
            End If
            
            ' ====== 5. 设置段落格式 ======
            With .Range.ParagraphFormat
                .Alignment = wdAlignParagraphLeft
                .LineSpacingRule = wdLineSpaceSingle
                .FirstLineIndent = 0
                .LeftIndent = 0
            End With
            
            ' ====== 6. 设置表格边框 ======
            With .Borders
                .InsideLineStyle = wdLineStyleSingle
                .OutsideLineStyle = wdLineStyleSingle
                .InsideLineWidth = wdLineWidth050pt
                .OutsideLineWidth = wdLineWidth050pt
                .InsideColor = wdColorBlack
                .OutsideColor = wdColorBlack
            End With
            
            ' ====== 7. 设置表格底纹为无填充 ======
            .Shading.BackgroundPatternColor = wdColorAutomatic
            
            ' ====== 8. 允许自动调整 ======
            .AutoFitBehavior (wdAutoFitContent)
            
        End With
    Next oTable
    
    ' 恢复光标位置并提示
    Selection.Collapse Direction:=wdCollapseEnd
    MsgBox "已完成!共处理了 " & oDoc.Tables.Count & " 个表格。" & vbNewLine & _
           "表格第一行:字体加粗" & vbNewLine & _
           "其他行:正常字体", vbInformation, "操作完成"
    
    Set oTable = Nothing
    Set oDoc = Nothing
End Sub

方法2:选中所有表格并统一格式

如果需要先选中所有表格再进行精细调整,可以使用以下代码:

vb 复制代码
Sub SelectAllTables()
    ' 一次性选中文档中所有表格
    Dim tempTable As Table
    Application.ScreenUpdating = False
    
    If ActiveDocument.ProtectionType = wdAllowOnlyFormfields Then
        MsgBox "文档已保护,此时不能选中多个表格!"
        Exit Sub
    End If
    
    ActiveDocument.DeleteAllEditableRanges wdEditorEveryone
    For Each tempTable In ActiveDocument.Tables
        tempTable.Range.Editors.Add wdEditorEveryone
    Next
    ActiveDocument.SelectAllEditableRanges wdEditorEveryone
    ActiveDocument.DeleteAllEditableRanges wdEditorEveryone
    
    Application.ScreenUpdating = True
End Sub

运行此宏后,所有表格会被同时选中,然后可以通过WPS的表格设计工具统一调整样式。

四、宏的使用方法

如何创建和运行宏

1. 打开宏编辑器:

  • 点击「开发工具」选项卡
  • 选择「Visual Basic」按钮

2. 输入宏代码:

  • 在打开的VBA编辑器中,选择「插入」菜单中的「模块」
  • 将上述代码复制到右侧的代码窗口中

3. 运行宏:

  • 返回WPS界面,点击「开发工具」中的「宏」按钮
  • 选择要运行的宏名称,点击「运行」

宏的安全性说明

  • 首次使用宏功能时,WPS可能会提示宏安全性设置,需要选择「启用宏」
  • 建议只运行可信来源的宏代码
  • 运行宏前最好先保存文档,以防误操作导致数据丢失

五、实用技巧与注意事项

  1. 先备份后操作 :运行宏前务必保存文档,因为宏的操作不可撤销。

  2. 测试效果:先在文档副本上运行宏,确认效果符合预期后再处理正式文档。

  3. 代码定制:根据实际需要调整宏代码中的参数值,如图片尺寸、表格字体等。

  4. 版式处理:如果文档中图片版式不一致,可先手动将图片版式改为「四周型」或「紧密型」,以便宏能正确处理。

  5. 组合使用:可以录制一系列操作生成宏代码,再根据需要调整代码参数。

六、进阶应用

学会基础操作后,可以尝试更高级的宏应用:

  • 创建自定义工具栏按钮,一键执行常用宏
  • 编写条件判断宏,根据不同条件应用不同格式
  • 结合循环和判断语句,实现更智能的格式调整

通过以上方法,我们可以轻松实现WPS文档中图片和表格格式的批量调整,大大提高工作效率。。

相关推荐
2601_967212723 小时前
国际品质电源轨道系统供应商技术评估维度
大数据·网络·经验分享
艺杯羹4 小时前
拒绝图片断链与样式坍塌:出版级富文本转Word与PDF的语义降维与数据固化引擎
markdown·pdf导出·富文本处理·文档引擎·ast解析
个 人 练 习 生5 小时前
C++中的内存管理
开发语言·c++·经验分享·学习
上海广测检测科技有限公司5 小时前
蓝牙耳机俄罗斯EAC认证详解:欧亚经济联盟体系下TWS与头戴式的合规路径
经验分享
浩瀚地学5 小时前
deepagents学习打卡day08
经验分享·笔记·python·学习·agent
焱焱枫5 小时前
OceanBase 为什么要多一层 Unit 和 ResourcePool?Tenant 直接分 CPU 内存不行吗?多租户资源模型一次讲透
经验分享
LCDduhui5 小时前
LCD屏幕中常见的液晶屏驱动芯片有哪些
经验分享
AlexCookie6 小时前
低空周报(第五期)2026年9月21日‑9月27日|多地新版适飞空域落地,西安低空大会集中产业对接,eVTOL政企签约释放商业化信号
经验分享·企业微信·创业创新·低空经济·行业周报
上海广测检测科技有限公司6 小时前
LoRa模块SRRC型号核准判定解析:微功率目录边界与核准触发条件
经验分享
文飞AI智能写作7 小时前
文献阅读笔记怎么做,写综述时才能找到依据
经验分享·大学生·论文写作·文飞ai