[VBA WORD]Word搜索替换-Find,除了针对文本外,还能针对样式

本文详细介绍了如何使用VBA在Word中进行精确搜索和替换,包括设置查找条件、样式匹配、计数和全文/选中区域操作。通过实例演示了全文档查找替换、简化代码及针对样式的批量操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[VBA WORD]Word搜索替换-Find

1、可搜索替换文本

.Execute FindText:=""
.Text = "软件" ''需要查找的文本

2、可搜索样式格式

 .Format = True ''如果为 True,则在查找操作中包含格式
.Style = "章节正文"

3、经验总结复盘

1.如果进行搜索计数

  • 使用Selection.Find判断条件会出现计数不对的现象
  • 使用ActiveDocument.Content.Find,并且属性.Wrap = wdFindStop
  • for语句必须放在with语句外框,否则第二次循环时会因with无法定位刷新对象而失效

2.如果对全文档进行搜索替换

  • ActiveDocument.Content.Find
  • 并且属性.Wrap = wdFindStop

3.如果对光标或选中处开始搜索替换

  • Selection.Find

4、示例代码

1.全

Sub 测试_word查找替换()

    Selection.Find.ClearFormatting ''取消任何为进行查找操作所指定的格式。
    Selection.Find.Replacement.ClearFormatting ''取消任何为进行替换操作所指定的格式。
    With Selection.Find
        .Text = "软件" ''需要查找的文本
        .Replacement.Text = "软@@@件"  ''需要替换的文本
'''        .Forward = True ''如果查找操作向前搜索,则本属性为 True。如果向后搜索,则本属性为 False
'''        .Wrap = wdFindContinue ''当到达搜索范围的开始或末尾时,要进行的操作
''        .Format = False ''如果为 True,则在查找操作中包含格式
''        .MatchCase = False ''如果本属性为 True,则查找操作区分大小写。
''        .MatchWholeWord = False ''如果本属性为 True,则只查找完整单词,而非一个长单词的一部分(英文)。
''        .MatchByte = True ''如果此值为 True,则区分全角和半角
''        .MatchWildcards = False ''如果本属性为 True,则待查找文字中包含查找通配符。
''        .MatchSoundsLike = False ''如果本属性为 True,则查找与待查找文字发音相近的单词,同音(英文)。
''        .MatchAllWordForms = False ''如果本属性为 True,则查找单词的所有形式(英文)
    End With
    Selection.Find.Execute
'    With Selection
'        If .Find.Forward = True Then
'            .Collapse Direction:=wdCollapseStart
'        Else
'            .Collapse Direction:=wdCollapseEnd
'        End If
'        .Find.Execute Replace:=wdReplaceOne  ''参数Replace:指定执行替换的个数:一个、全部或者不替换。
'        If .Find.Forward = True Then
'            .Collapse Direction:=wdCollapseEnd
'        Else
'            .Collapse Direction:=wdCollapseStart
'        End If
'        .Find.Execute
'    End With
End Sub
2.精简代码1-查找并替换
Sub A测试_word查找替换()

    Selection.Find.ClearFormatting ''取消任何为进行查找操作所指定的格式。
    Selection.Find.Replacement.ClearFormatting ''取消任何为进行替换操作所指定的格式。
    With Selection.Find
        .Text = "市区" ''需要查找的文本
        .Replacement.Text = "市@@@区"  ''需要替换的文本
    End With
    Selection.Find.Execute
    Selection.Find.Execute Replace:=wdReplaceOne  ''参数Replace:指定执行替换的个数:一个、全部或者不替换。
End Sub
3.精简代码2-查找并自动选定-放在定义中
下面的示例在文档中向前搜索“Microsoft”。如果找到了,就自动选定该词。
(下面代码中非加粗部分,均可省略)
With Selection.Find
    .Forward = True
    .ClearFormatting
    .MatchWholeWord = True '' ''如果本属性为 True,则只查找完整单词,而非一个长单词的一部分(英文)。
    .MatchCase = False
    .Wrap = wdFindContinue
    .Execute FindText:="Microsoft"
End With

在这里插入图片描述

5、批量循环查找替换-针对样式

1.示例代码

本示例在活动文档中的每个样式为标题 3 的段落前插入“Tip:”。
在每次找到该样式时,Do Loop 语句重复同样的一系列操作。

With ActiveDocument.Content.Find
    .ClearFormatting
    .Style = wdStyleHeading3
    Do While .Execute(FindText:="", Forward:=True, _
            Format:=True) = True
        With .Parent
            .StartOf Unit:=wdParagraph, Extend:=wdMove
            .InsertAfter "Tip: "
            .Move Unit:=wdParagraph, Count:=1
        End With
    Loop
End With

2.精简版:查找样式,需要开启格式查找模式

With Selection.Find
    .ClearFormatting
    .Style = "章节正文"
    .Execute FindText:="", Format:=True
End With

With Selection.Find
    .ClearFormatting
    .Style = "章节正文"
    .Format = True
    .Execute 
End With

美图分享

请添加图片描述
请添加图片描述
请添加图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

混入码龄的巍巍清新一笑

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值