适用范围: yes Visual Studio no Visual Studio for Mac no Visual Studio Code

Find 对象是 Selection Range 对象的成员,可使用其中任何一个来搜索 Microsoft Office Word 文档中的文本。 替换命令是查找命令的扩展。

使用 Find 对象循环访问 Microsoft Office Word 文档并搜索特定文本、格式或样式,使用 Replacement 属性替换任何找到的项。

适用于: 本主题中的信息适用于 Word 的文档级项目和 VSTO 外接程序项目。 有关详细信息,请参阅 办公室应用程序和项目类型 提供的功能。

使用 Selection 对象

使用 Selection 对象查找文本时,指定的任何搜索条件均只能应用于当前选定的文本。 如果 Selection 是插入点,则搜索文档。 找到符合搜索条件的项时,将自动将其选中。

请务必注意, Find 条件是累积性的,这意味着会将条件添加到之前的搜索条件。 搜索前使用 ClearFormatting 方法清除之前的搜索的格式。

使用 Selection 对象查找文本

  • 将搜索字符串分配给变量。

    if (Application.Selection.Find.Execute(ref findText, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing)) MessageBox.Show("Text found."); MessageBox.Show("The text could not be located."); If Application.Selection.Find.Execute(findText) = True Then MessageBox.Show("Text found.") MessageBox.Show("The text could not be located.") End If Application.Selection.Find.ClearFormatting(); if (Application.Selection.Find.Execute(ref findText, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing)) MessageBox.Show("Text found."); MessageBox.Show("The text could not be located."); Application.Selection.Find.ClearFormatting() If Application.Selection.Find.Execute(findText) = True Then MessageBox.Show("Text found.") MessageBox.Show("The text could not be located.") End If End Sub

    使用 Range 对象

    使用 Range 对象使你能够搜索文本,而无需在用户界面中显示任何内容。 如果找到与搜索条件匹配的文本,则对象 Find 返回 True ;如果找不到,则返回 False 如果找到了文本,则它还重新定义 Range 对象以匹配搜索条件。

    使用 Range 对象查找文本

  • 定义 Range 对象,该对象包含文档中的第二个段落。

    下面的代码示例可用于文档级自定义项。

    if (rng.Find.Execute(ref findText, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing)) if (rng.Find.Execute(ref findText, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing)) MessageBox.Show("Text found."); MessageBox.Show("Text not found."); rng.Select(); Word.Document document = this.Application.ActiveDocument; Word.Range rng = document.Paragraphs[2].Range; rng.Find.ClearFormatting(); if (rng.Find.Execute(ref findText, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing)) MessageBox.Show("Text found."); MessageBox.Show("Text not found."); rng.Select(); Dim findText As Object = "find me" Dim rng As Word.Range = Me.Application.ActiveDocument.Paragraphs(2).Range rng.Find.ClearFormatting() If rng.Find.Execute(findText) Then MessageBox.Show("Text found.") MessageBox.Show("Text not found.") End If rng.Select() End Sub

    在文档中搜索和替换文本

    以下代码将搜索当前所选内容,并将字符串 的所有匹配项替换为“找到 ”字符串

    在文档中搜索并替换文本

  • 将以下示例代码添加到项目的 ThisDocument ThisAddIn 类中。

    Word.Find findObject = Application.Selection.Find; findObject.ClearFormatting(); findObject.Text = "find me"; findObject.Replacement.ClearFormatting(); findObject.Replacement.Text = "Found"; object replaceAll = Word.WdReplace.wdReplaceAll; findObject.Execute(ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref missing, ref replaceAll, ref missing, ref missing, ref missing, ref missing); Private Sub SearchReplace() Dim FindObject As Word.Find = Application.Selection.Find With FindObject .ClearFormatting() .Text = "find me" .Replacement.ClearFormatting() .Replacement.Text = "Found" .Execute(Replace:=Word.WdReplace.wdReplaceAll) End With End Sub

    Find 类具有 ClearFormatting 方法,而 Replacement 类也具有自己的 ClearFormatting 方法。 执行查找和替换操作时,必须使用这两个对象的 ClearFormatting 方法。 如果仅在 Find 对象上使用该方法,则可能会在替换文本中得到意外的结果。

  • 使用 Find 对象的 Execute 方法来替换每个找到的项。 若要指定要替换的项,请使用 Replace 参数。 此参数可能是以下 WdReplace 值之一:

  • wdReplaceAll 将替换所有找到的项。

  • wdReplaceNone 不会替换任何找到的项。

  • wdReplaceOne 将替换找到的第一个项。

  •