You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

寻求LibreOffice Writer宏批量修改字体大小的解决方案

我明白你折腾这个宏已经熬了好几个小时了,明明需求听起来简单,实际写起来却处处卡壳对吧?别着急,我给你整了个靠谱的宏代码,完美匹配你的需求:

Sub AdjustFontSizes()
    ' 关闭屏幕更新,让宏跑得更快
    Application.ScreenUpdating = False
    
    Dim para As Paragraph
    
    ' 第一步:把所有不是18pt的字体统一改成12pt
    For Each para In ActiveDocument.Paragraphs
        If para.Range.Font.Size <> 18 Then
            para.Range.Font.Size = 12
        End If
    Next para
    
    ' 第二步:把原来的18pt字体改成22pt
    For Each para In ActiveDocument.Paragraphs
        If para.Range.Font.Size = 18 Then
            para.Range.Font.Size = 22
        End If
    Next para
    
    ' 第三步:将Heading 1样式的字体设置为28pt
    On Error Resume Next ' 防止文档里没这个样式时宏报错
    ActiveDocument.Styles("Heading 1").Font.Size = 28
    On Error GoTo 0
    
    ' 恢复屏幕更新,弹出完成提示
    Application.ScreenUpdating = True
    MsgBox "字体大小调整搞定啦!", vbInformation
End Sub

给你拆解下这段代码的逻辑,方便你理解和调整:

  • 开头关屏幕更新是为了避免宏运行时屏幕乱闪,还能提速不少;
  • 先处理非18pt的内容改成12pt,这样后面处理18pt的时候就不会和其他大小混淆;
  • 单独遍历一次把18pt改成22pt,确保只碰原来的目标内容;
  • 直接修改Heading 1样式的字体大小,比手动选中每个标题改高效多了,而且以后再用这个样式的标题都会自动是28pt;加的错误处理是怕你文档里压根没这个样式,避免宏直接崩掉。

小提醒:运行宏前记得先保存文档哈!如果你的文档里有文本框、表格里的内容也需要调整,告诉我,我再给你改代码适配那些场景~

内容的提问来源于stack exchange,提问作者WinEunuuchs2Unix

火山引擎 最新活动