Word VBA:查找文本字符串并将其所有实例更改为标题大小写

Word VBA:查找文本字符串并将其所有实例更改为标题大小写,vba,ms-word,Vba,Ms Word,我试图编写一个宏,将“section 1”、“section 2”等的大小写改为标题大小写,因此它们都是“section 1”等。我在这里进行了改编: 我遇到的问题是,它一次只更改一个实例。理想情况下,它可以通过一次按键改变所有实例的情况 作为奖励,我还希望将案例变更登记为跟踪变更。由于我正在使用跟踪的更改,我无法用节([0-9])替换节\1的简单文本宏,因为跟踪的错误使其成为“1节”、“2节”等。这不是必要的,但会是一个非常好的奖励。.Case函数不会被跟踪,并且.Font只有.AllCaps

我试图编写一个宏,将“section 1”、“section 2”等的大小写改为标题大小写,因此它们都是“section 1”等。我在这里进行了改编:

我遇到的问题是,它一次只更改一个实例。理想情况下,它可以通过一次按键改变所有实例的情况

作为奖励,我还希望将案例变更登记为跟踪变更。由于我正在使用跟踪的更改,我无法用
节([0-9])
替换
节\1
的简单文本宏,因为跟踪的错误使其成为“1节”、“2节”等。这不是必要的,但会是一个非常好的奖励。
.Case
函数不会被跟踪,并且
.Font
只有
.AllCaps
的一个选项

也许有一种方法可以找到
部分[0-9]
,将光标移动到单词的开头并选择第一个字母,设置
.Font.AllCaps=True
,然后循环,直到不再有
部分[0-9]
的实例?这只是一个想法,但这远远超出了我目前的宏观能力。目前的主要工作是将上述代码应用于
部分[0-9]
的所有实例

干杯

试试看:

Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "section [0-9]"
    .Replacement.Text = ""
    .Format = False
    .Forward = True
    .Wrap = wdFindStop
    .MatchWildcards = True
  End With
  Do While .Find.Execute
    .Characters.First.Text = "S"
    .Collapse wdCollapseEnd
  Loop
End With
Application.ScreenUpdating = True
End Sub
尝试:

Sub Demo()
Application.ScreenUpdating = False
With ActiveDocument.Range
  With .Find
    .ClearFormatting
    .Replacement.ClearFormatting
    .Text = "section [0-9]"
    .Replacement.Text = ""
    .Format = False
    .Forward = True
    .Wrap = wdFindStop
    .MatchWildcards = True
  End With
  Do While .Find.Execute
    .Characters.First.Text = "S"
    .Collapse wdCollapseEnd
  Loop
End With
Application.ScreenUpdating = True
End Sub