[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
美图分享