Word VBA教程:查詢並替換文字或格式
通過Find 和Replacement物件可實現查詢和替換功能。Selection 和Range物件可以使用 Find物件。從 Selection 或 Range物件訪問 Find物件時,查詢操作會略有不同。
查詢並選定文字
如果從 Selection物件訪問 Find物件,當找到搜尋條件時,就會更改所選內容。下列示例選定下一個出現的“Hello”。如果到達文件結尾時仍未找到“Hello”,則停止搜尋。
With Selection.Find
.Forward = True
.Wrap = wdFindStop
.Text = "Hello"
.Execute
End With
Find物件包含與“查詢和替換”對話方塊中的選項相關的屬性(在“編輯”選單上選擇“查詢”可顯示該對話方塊)。可以設定 Find物件單獨的屬性或使用Execute方法的引數,如下例所示。
Selection.Find.Execute FindText:="Hello", _
Forward:=True, Wrap:=wdFindStop
查詢文字,但不更改所選內容
如果從 Range物件訪問 Find物件,則找到搜尋條件時,不更改所選內容,但是會重新定義 Range物件。下列示例在活動文件中查詢第一個出現的“blue”。如果找到該單詞,則重新定義該區域,並將加粗格式應用於單詞“blue”。
With ActiveDocument.Content.Find
.Text = "blue"
.Forward = True
.Execute
If .Found = True Then .Parent.Bold = True
End With
下列示例使用 Execute方法的引數,執行結果與上例相同。
Set myRange = ActiveDocument.Content
myRange.Find.Execute FindText:="blue", Forward:=True
If myRange.Find.Found = True Then myRange.Bold = True
使用 Replacement物件
Replacement物件代表查詢和替換操作的替換條件。Replacement物件的屬性和方法對應於“查詢和替換”對話方塊中的選項(單擊“編輯”選單中的“查詢”或“替換”命令可顯示該對話方塊)。
可通過 Find物件使用 Replacement物件。下列示例將所有單詞“hi”替換為“hello”。由於 Find物件是通過 Selection物件訪問的,所以當找到搜尋條件時,會更改所選內容。
With Selection.Find
.ClearFormatting
.Text = "hi"
.Replacement.ClearFormatting
.Replacement.Text = "hello"
.Execute Replace:=wdReplaceAll, Forward:=True, _
Wrap:=wdFindContinue
End With
下列示例取消活動文件中的加粗格式。Find物件的Bold屬性為 True,而 Replacement物件的該屬性為 False。若要查詢並替換格式,可將查詢和替換文字設為空字串 (""),並將 Execute方法的 Format引數設為 True。由於從 Range物件訪問 Find物件,所選內容將保持不變(Content屬性返回一個 Range物件)。
With ActiveDocument.Content.Find
.ClearFormatting
.Font.Bold = True
With .Replacement
.ClearFormatting
.Font.Bold = False
End With
.Execute FindText:="", ReplaceWith:="", _
Format:=True, Replace:=wdReplaceAll
End With