微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。