寻求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




