笔记(6)| word操作中的VBA代码两则(图片处理+样式)

梦貘 2024-07-16

前言:今天处理了个word文档,有两个需求,一个比较大众,一个比较小众,问了GPT解决了,记录一下解决思路。

BTW,GPT-4o是真好使啊,我爱这个有AI的新世界

序、怎么用VBA代码

GPT给出这两个问题的解决方案都是用VB代码,所以这里简单讲讲VB代码怎么用

  1. 打开要处理的word文档
  2. Alt + F11 打开 VBA 编辑器。
  3. 在 VBA 编辑器中,选择 Insert > Module,然后将代码粘贴到模块中。
  4. F5 运行宏。

问题一、在不改变图片宽高比的情况下统一设置word中所有图片的宽度+居中

GPT给的解决方案是VBA代码,确实VB代码是最方便的

代码如下,自带注释,我就不解释了

Sub ResizeAndCenterAllPicturesToA4Width()
    Dim shp As InlineShape
    Dim targetWidth As Single
    
    ' 设置目标宽度为 451.32 点(159.2 毫米)
    targetWidth = 400
    
    For Each shp In ActiveDocument.InlineShapes
        ' 锁定纵横比
        shp.LockAspectRatio = msoTrue
        ' 设置宽度
        shp.Width = targetWidth
        ' 居中图片
        shp.Range.ParagraphFormat.Alignment = wdAlignParagraphCenter
    Next shp
End Sub

问题二、提取文中样式并保存为“标题2”

emm,其实这个问题有点小题大做了,直接看看那段是什么样式手动设置也行,但是我脑抽问了GPT,就还是,记录一下吧

依旧是VBA代码,先选中需要提取样式的文本,然后执行这个代码

Sub CopyStyleToHeading2()
    ' 复制选定文本的样式
    Selection.CopyFormat
    
    ' 修改标题2样式
    With ActiveDocument.Styles(wdStyleHeading2)
        .ParagraphFormat.LeftIndent = Selection.ParagraphFormat.LeftIndent
        .ParagraphFormat.RightIndent = Selection.ParagraphFormat.RightIndent
        .ParagraphFormat.SpaceBefore = Selection.ParagraphFormat.SpaceBefore
        .ParagraphFormat.SpaceAfter = Selection.ParagraphFormat.SpaceAfter
        .ParagraphFormat.LineSpacingRule = Selection.ParagraphFormat.LineSpacingRule
        .ParagraphFormat.Alignment = Selection.ParagraphFormat.Alignment
        
        .Font.Name = Selection.Font.Name
        .Font.Size = Selection.Font.Size
        .Font.Bold = Selection.Font.Bold
        .Font.Italic = Selection.Font.Italic
        .Font.Underline = Selection.Font.Underline
        .Font.Color = Selection.Font.Color
    End With
End Sub

本文阅读量: