如何在不影响其余文本的情况下将某些文本的样式更改为标题1的样式

时间:2019-06-21 06:06:06

标签: vba ms-word

我想将某些字体大小= 20和字体名称=“ Times New Roman”的文本的格式更改为“ Heading 1”的样式

问题是,例如,当选择标题1时,文本居中并手动执行,则文本被发送到左侧并更改了其字体大小,字体名称和字体颜色 与标题1相同。然后,​​将文本与“标题1”相关联后,我可以再次居中并设置与以前相同的格式选项,而文本仍与“标题1”相关

我尝试使用VBA来实现此目的,以便将与上述相同的所有大小为20且字体为“ Times New Roman”的文本应用于该文本,但是下面的代码似乎会影响文档中的其他文本 即使该文本具有不同的字体大小。

如何解决此问题?

Sub ChangeToHeading1()
Dim wdDoc As Document

Set wdDoc = ActiveDocument

    With wdDoc.Range
        .Find.ClearFormatting
        .Find.Font.Size = 20
        .Find.Replacement.ClearFormatting
        .Find.Text = ""
        .Find.Replacement.Text = ""
        .Find.Replacement.Style = ActiveDocument.Styles("Heading 1")
        .ParagraphFormat.Alignment = wdAlignParagraphCenter
        .Font.Name = "Times New Roman"
        .Font.Size = 20         
        .Find.Forward = True
        .Find.Wrap = wdFindContinue
        .Find.Format = True
        .Find.MatchCase = False
        .Find.MatchWholeWord = False
        .Find.MatchWildcards = False
        .Find.MatchSoundsLike = False
        .Find.MatchAllWordForms = False
        .Find.Execute Replace:=wdReplaceAll
    End With
End Sub

谢谢。

2 个答案:

答案 0 :(得分:1)

如果我正确理解,您希望标题1在20点Times New Roman中居中。因此,在将样式应用到查找中之前,只需修改样式以具有所需的设置即可。

Sub ModifyHeading1()
  With ActiveDocument.Styles(wdStyleHeading1)
    With .Font
      .Name = "Times New Roman"
      .Size = 20
    End With
    .ParagraphFormat.Alignment = wdAlignParagraphCenter
  End With
End Sub

Sub ChangeToHeading1()
Dim wdDoc As Document

Set wdDoc = ActiveDocument

    With wdDoc.Range.Find
        .ClearFormatting
        .Font.Size = 20
        .Replacement.ClearFormatting
        .Text = ""
        .Replacement.Text = ""
        .Replacement.Style = ActiveDocument.Styles("Heading 1")
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .Execute Replace:=wdReplaceAll
    End With
End Sub

答案 1 :(得分:1)

由于您不必费心告诉我们您希望Heading 1样式是什么颜色,我们只能猜测。您确实还应该花一些时间来学习如何使用VBA,而不仅仅是宏记录器-在网络上也有无数示例,说明了所需的各种代码。例如:

-4.000