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

关键参数说明

  • HeightWidth属性:控制图片的高度和宽度
  • 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文档中图片和表格格式的批量调整,大大提高工作效率。。

相关推荐
源代码•宸36 分钟前
GoLang并发示例代码1(关于逻辑处理器运行顺序)
开发语言·经验分享·后端·golang
wtsolutions40 分钟前
WPS另存为JSON,WPS导出JSON, WPS表格转换成JSON : Excel to JSON WPS插件使用指南
json·excel·wps·插件·加载项·wtsolutions
m5655bj1 小时前
Python 将 Word 文档转换为 Markdown 格式
python·c#·word
天地一沙鸥GW1 小时前
如何将Word文档中已设置好的样式复制/迁移到另一个Word中??
word
阿恩.7701 小时前
国际会议:评职称、申博、考研的硬核加分项
人工智能·经验分享·笔记·计算机网络·能源
以梦为马mmky1 小时前
考研专业课135+初试复试经验!
经验分享·考研·信号与系统·山东师范大学
宏集科技工业物联网1 小时前
超越传统工控屏:宏集EXOR物联网HMI如何实现数据采集、边缘计算与恶劣环境下的高可靠
经验分享·工业控制·工业自动化·hmi·工控屏·工业触摸屏
weixin_537217062 小时前
摄影教程资源合集
经验分享
君不见~2 小时前
如何在ArcGIS中实现图形要素的内缩操作?
经验分享·arcgis