【问题标题】:How to change font size excluding headings,sub headings, TOC ,Title using VBA macro in word document如何在 Word 文档中使用 VBA 宏更改不包括标题、子标题、目录、标题的字体大小
【发布时间】:2019-03-12 22:27:36
【问题描述】:

我的场景是我想使用 VBA 宏更改内容正文的字体大小,不包括标题、标题、子标题、TOC,简单来说就是使用宏更改实际内容正文的字体(Normal 应用样式实际内容)

这是我的 VBA 代码:

Private Sub Document_Open()
   With ActiveDocument.Content.Find
        .ClearFormatting
        .Replacement.ClearFormatting
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Text = ""
        .Replacement.Text = ""
        .Execute Replace:=wdReplaceAll
        .ClearFormatting
        .Replacement.ClearFormatting
        .Font.Name = "Arial"
        .Replacement.Font.Name = "Calibri"
        .Execute Replace:=wdReplaceAll         
         .ClearFormatting
        .Replacement.ClearFormatting
        .Font.Name = "Times New Roman"
        .Replacement.Font.Name = "Calibri"
        .Execute Replace:=wdReplaceAll      
        .ClearFormatting
        .Replacement.ClearFormatting
        .Font.Size = 11
        .Replacement.Font.Size = 10
        .Execute Replace:=wdReplaceAll                
    End With
End Sub

使用此代码,整个文档的字体大小正在发生变化,但字体名称仅使用上述宏更改实际内容。

是否可以使用 VBA 宏来更改文档的实际内容?

你能建议我如何使用 VBA 宏来做到这一点吗?

【问题讨论】:

  • ...请展示您到目前为止所拥有的内容,将您的代码添加到您的问题中...

标签: vba ms-word


【解决方案1】:

如果您确定样式Normal 应用于文档,并且您想更改具有Normal 样式的部分的字体属性,那么您可以在Find 中指定样式,如下所示:

ActiveDocument.Content.Find.Style = ActiveDocument.Styles("Normal").

.Replacement.Text = "" 也会从您的文档中删除所有匹配的文本。确保您使用.Replacement.Text = "^&"^& 将替换找到的相同文本。

Sub FormatNormal()
    With ActiveDocument.Content.Find
        .ClearFormatting
        .Style = ActiveDocument.Styles("Normal")
        .Text = ""
        .Replacement.Text = "^&"
        .Replacement.Font.Size = 10
        .Replacement.Font.Name = "Calibri"
        .Replacement.ClearFormatting
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
        .Execute Replace:=wdReplaceAll
    End With
End Sub

【讨论】:

  • 谢谢你,Arul,你能用我的宏描述一下吗,因为我对宏并不完全了解
  • @A.Raut,我已经编辑了答案以包含一个示例。更改它以适合您的。
  • @Arul,我已经检查过了,但代码在现有和新创建的 word doc 中不起作用
  • 你说的没有用是什么意思?请具体。
  • 感谢 Arul 的解决方案,它对我真的很有帮助
猜你喜欢
  • 1970-01-01
  • 2016-08-23
  • 1970-01-01
  • 1970-01-01
  • 2019-02-05
  • 1970-01-01
  • 2017-06-17
  • 2011-08-26
  • 2017-12-15
相关资源
最近更新 更多