Word 2010 VBA 应用样式但不改变字体

Word 2010 VBA 应用样式但不改变字体

我并不经常使用 VBA,我正在尝试组合一个宏,它选择文档中字体大小为 13.5 pt 的所有文本并将其样式更改为标题 1。到目前为止,我有以下代码:

Sub FormatSectionHeaders()
    Application.ScreenUpdating = False
    Dim oRng As Word.Range
    Set oRng = ActiveDocument.Content
    oRng.Find.ClearFormatting
    oRng.Find.Replacement.ClearFormatting
    oRng.Find.Replacement.Style = wdStyleHeading1
    With oRng.Find
     .Font.Size = 13.5
     .Text = ""
     .Execute Format:=True, Replace:=wdReplaceAll, Wrap:=wdFindContinue
    End With
End Sub

这样会选择正确的文本并应用样式,但出于某种原因,它不会覆盖所有原始格式 - 例如,字体和字体大小不会更改为与样式相匹配。有人能告诉我我做错了什么吗?

注意:我可以使用以下循环使其工作,但这比使用 replaceall 慢很多,所以我想尝试修复上面的代码,而不是使用这样的代码。

With oRng.Find
    .ClearFormatting
    .Text = ""
    .Font.Size = 13.5
    While .Execute
        oRng.Style = ActiveDocument.Styles(wdStyleHeading1)
        oRng.Collapse wdCollapseEnd
    Wend
End With

答案1

看来,这个问题以及我在使用 VBA 代码时遇到的其他问题都是由于被更改的文本位于大型(不可见)表格的单元格内。在将文本仅传输到另一个文档时,问题得到了解决。请参阅注释,了解如何强制样式在单元格内生效。

答案2

您正在寻找字体大小为 13.5 的内容,并尝试为该内容应用标题 1 样式。但在 Word 文档默认模板(普通)中,它具有第一级标题样式作为标题 1,因此您可以使用如下代码

oRng.style =“标题1”

相关内容