更新:2007 年 11 月
| 适用对象 | 
|---|
| 本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。 项目类型 
 Microsoft Office 版本 
 有关更多信息,请参见按应用程序和项目类型提供的功能。 | 
Find 对象同时是 Selection 和 Range 对象的成员,可以使用其中任意一个对象在 Microsoft Office Word 文档中搜索文本。“替换”命令是“查找”命令的扩展。有关在文档中替换文本的信息,请参见如何:在文档中搜索和替换文本。
使用 Selection 对象
使用 Selection 对象查找文本时,指定的所有搜索条件只适用于当前选择的文本。如果 Selection 是插入点,则搜索整个文档。找到与搜索条件匹配的项时,将自动选定该项。
需要注意的是,Find 条件是累积的,这意味着条件会与前面的搜索条件叠加起来。搜索前,可使用 ClearFormatting 方法清除以前搜索的格式设置。
使用 Selection 对象查找文本
- 将搜索字符串分配给变量。 - Dim findText As String = "find me"- object findText = "find me";
- 清除以前搜索的格式设置。 - Application.Selection.Find.ClearFormatting()- Application.Selection.Find.ClearFormatting();
- 执行搜索并显示一个包含结果的消息框。 - If Application.Selection.Find.Execute(findText) = True Then MessageBox.Show("Text found.") Else MessageBox.Show("The text could not be located.") End If- 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."); } else { MessageBox.Show("The text could not be located."); }
下面的示例演示完整的方法。
Private Sub SelectionFind()
    Dim findText As String = "find me"
    Application.Selection.Find.ClearFormatting()
    If Application.Selection.Find.Execute(findText) = True Then
        MessageBox.Show("Text found.")
    Else
        MessageBox.Show("The text could not be located.")
    End If
End Sub
private void SelectionFind() 
{ 
    object findText = "find me";
    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.");
    } 
    else
    { 
        MessageBox.Show("The text could not be located.");
    } 
}
使用 Range 对象
使用 Range 对象,您将能够搜索文本,同时在用户界面中不显示任何内容。如果找到与搜索条件匹配的文本,Find 对象将返回 True;否则将返回 True。如果找到了文本,该对象还会重新定义 Range 对象以匹配搜索条件。
使用 Range 对象查找文本
- 定义一个由文档的第二段组成的 Range 对象。 - 下面的代码示例可用于文档级自定义项。 - Dim rng As Word.Range = Me.Paragraphs(2).Range- Word.Range rng = this.Paragraphs[2].Range;- 下面的代码示例可用于应用程序级外接程序。此示例使用活动文档。 - Dim rng As Word.Range = Me.Application.ActiveDocument.Paragraphs(2).Range- Word.Document document = this.Application.ActiveDocument; Word.Range rng = document.Paragraphs[2].Range;
- 使用 Range 对象的 Find 属性,首先清除所有现有的格式设置选项,然后搜索字符串 find me。 - rng.Find.ClearFormatting() If rng.Find.Execute(findText) Then- 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)) {
- 在消息框中显示搜索结果,并选择 Range 以使其可见。 - MessageBox.Show("Text found.") Else MessageBox.Show("Text not found.") End If rng.Select()- MessageBox.Show("Text found."); } else { MessageBox.Show("Text not found."); } rng.Select();- 如果搜索失败,则第二段被选中;如果搜索成功,则显示搜索条件。 
下面的示例显示了文档级自定义项的完整代码。若要使用此示例,请从项目内的 ThisDocument 类中运行代码。
Private Sub RangeFind()
    Dim findText As String = "find me"
    Dim rng As Word.Range = Me.Paragraphs(2).Range
    rng.Find.ClearFormatting()
    If rng.Find.Execute(findText) Then
        MessageBox.Show("Text found.")
    Else
        MessageBox.Show("Text not found.")
    End If
    rng.Select()
End Sub
private void RangeFind() 
{ 
    object findText = "find me";
    Word.Range rng = this.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.");
    } 
    else 
    { 
        MessageBox.Show("Text not found.");
    } 
    rng.Select(); 
}
下面的示例显示了应用程序级外接程序的完整代码。若要使用此示例,请从项目内的 ThisAddIn 类中运行代码。
Private Sub RangeFind()
    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.")
    Else
        MessageBox.Show("Text not found.")
    End If
    rng.Select()
End Sub
private void RangeFind()
{
    object findText = "find me";
    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.");
    }
    else
    {
        MessageBox.Show("Text not found.");
    }
    rng.Select();
}