如何解决Word VBA:查找一串文本并将其所有实例更改为标题大小写
我正在尝试编写一个宏来将“第 1 节”、“第 2 节”等的大小写更改为标题大小写,因此他们都阅读了“第 1 节”等。我已经改编了 {{3}在这里:
Dim Rng As Range
Dim Fnd As Boolean
Set Rng = Selection.Range
With Rng.Find
.ClearFormatting
.Execute FindText:="section [0-9]",Forward:=True,_
Format:=False,Wrap:=wdFindContinue,MatchWildcards:=True
Fnd = .Found
End With
If Fnd = True Then
Rng.Case = wdNextCase
End If
我遇到的问题是它一次只更改一个实例。理想情况下,它可以通过一个按键改变所有实例的大小写。
作为奖励,我还希望将案例更改注册为跟踪更改。当我使用跟踪更改时,我不能用 section ([0-9])
为 Section \1
做一个简单的替换文本宏,因为跟踪的错误使它成为“1Section”、“2Section”等。这是不是必需的,但会是一个非常好的奖金。 .Case
函数不会被跟踪,并且 .Font
只有 .AllCaps
的一个选项。
也许有一种方法可以找到section [0-9]
,将光标移到单词的开头并选择第一个字母,设置.Font.AllCaps = True
,然后循环直到没有更多的{{1}实例}}?只是一个想法,但目前这超出了我的宏观能力。现在的主要事情是让上述代码应用于 section [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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。