如何:在文档中搜索文本

更新:2007 年 11 月

适用对象

本主题中的信息仅适用于指定的 Visual Studio Tools for Office 项目和 Microsoft Office 版本。

项目类型

  • 文档级项目

  • 应用程序级项目

Microsoft Office 版本

  • Word 2003

  • Word 2007

有关更多信息,请参见按应用程序和项目类型提供的功能

Find 对象同时是 SelectionRange 对象的成员,可以使用其中任意一个对象在 Microsoft Office Word 文档中搜索文本。“替换”命令是“查找”命令的扩展。有关在文档中替换文本的信息,请参见如何:在文档中搜索和替换文本

使用 Selection 对象

使用 Selection 对象查找文本时,指定的所有搜索条件只适用于当前选择的文本。如果 Selection 是插入点,则搜索整个文档。找到与搜索条件匹配的项时,将自动选定该项。

需要注意的是,Find 条件是累积的,这意味着条件会与前面的搜索条件叠加起来。搜索前,可使用 ClearFormatting 方法清除以前搜索的格式设置。

使用 Selection 对象查找文本

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

    Dim findText As String = "find me"
    
    object findText = "find me";
    
  2. 清除以前搜索的格式设置。

    Application.Selection.Find.ClearFormatting()
    
    Application.Selection.Find.ClearFormatting();
    
  3. 执行搜索并显示一个包含结果的消息框。

    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 对象查找文本

  1. 定义一个由文档的第二段组成的 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;
    
  2. 使用 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)) 
    { 
    
  3. 在消息框中显示搜索结果,并选择 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();
}

请参见

任务

如何:在文档中搜索和替换文本

如何:在 Word 中设置搜索选项

如何:依次通过在文档中找到的项

如何:在文档中定义和选择范围

如何:在搜索后还原选定内容

概念

了解 Office 解决方案中的可选参数