Click to Rate and Give Feedback
MSDN
MSDN Library
Visual Studio 2008
Visual Studio
Word Solutions
 How to: Search for Text in Document...
This page is specific to
Microsoft Visual Studio 2008/.NET Framework 3.5

Other versions are also available for the following:
Microsoft Visual Studio Tools for the Microsoft Office system (version 3.0)
How to: Search for Text in Documents

Updated: November 2007

Applies to

The information in this topic applies only to the specified Visual Studio Tools for Office projects and versions of Microsoft Office.

Project type

  • Document-level projects

  • Application-level projects

Microsoft Office version

  • Word 2003

  • Word 2007

For more information, see Features Available by Application and Project Type.

The Find object is a member of both the Selection and the Range objects, and you can use either one to search for text in Microsoft Office Word documents. The replace command is an extension of the find command. For information about replacing text in documents, see How to: Search for and Replace Text in Documents.

When you use a Selection object to find text, any search criteria you specify are applied only against currently selected text. If the Selection is an insertion point, then the document is searched. When the item is found that matches the search criteria, it is automatically selected.

It is important to note that the Find criteria are cumulative, which means that criteria are added to previous search criteria. Clear formatting from previous searches by using the ClearFormatting method prior to the search.

To find text using a Selection object

  1. Assign a search string to a variable.

    Visual Basic
    Dim findText As String = "find me"
    
    
    C#
    object findText = "find me";
    
    
  2. Clear formatting from previous searches.

    Visual Basic
    Application.Selection.Find.ClearFormatting()
    
    
    C#
    Application.Selection.Find.ClearFormatting();
    
    
  3. Execute the search and display a message box with the results.

    Visual Basic
    If Application.Selection.Find.Execute(findText) = True Then
        MessageBox.Show("Text found.")
    Else
        MessageBox.Show("The text could not be located.")
    End If
    
    
    C#
    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.");
    } 
    
    

The following example shows the complete method.

Visual Basic
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

C#
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.");
    } 
}

Using a Range object enables you to search for text without displaying anything in the user interface. The Find object returns True if text is found that matches the search criteria, and False if it does not. It also redefines the Range object to match the search criteria if the text is found.

To find text using a Range object

  1. Define a Range object that consists of the second paragraph in the document.

    The following code example can be used in a document-level customization.

    Visual Basic
    Dim rng As Word.Range = Me.Paragraphs(2).Range
    
    
    C#
    Word.Range rng = this.Paragraphs[2].Range; 
    
    

    The following code example can be used in an application-level add-in. This example uses the active document.

    Visual Basic
    Dim rng As Word.Range = Me.Application.ActiveDocument.Paragraphs(2).Range
    
    
    C#
    Word.Document document = this.Application.ActiveDocument;
    Word.Range rng = document.Paragraphs[2].Range;
    
    
  2. Using the Find property of the Range object, first clear any existing formatting options, and then search for the string find me.

    Visual Basic
    rng.Find.ClearFormatting()
    
    If rng.Find.Execute(findText) Then
    
    
    C#
    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. Display the results of the search in a message box, and select the Range to make it visible.

    Visual Basic
        MessageBox.Show("Text found.")
    Else
        MessageBox.Show("Text not found.")
    End If
    
    rng.Select()
    
    
    C#
        MessageBox.Show("Text found.");
    } 
    else 
    { 
        MessageBox.Show("Text not found.");
    } 
    
    rng.Select(); 
    
    

    If the search fails, the second paragraph is selected; if it succeeds, the search criteria are displayed.

The following example shows the complete code for a document-level customization. To use this example, run the code from the ThisDocument class in your project.

Visual Basic
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

C#
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(); 
}

The following example shows the complete code for an application-level add-in. To use this example, run the code from the ThisAddIn class in your project.

Visual Basic
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

C#
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();
}

Tags What's this?: Add a tag
Community Content   What is Community Content?
Add new content RSS  Annotations
Processing
© 2008 Microsoft Corporation. All rights reserved. Terms of Use  |  Trademarks  |  Privacy Statement
Page view tracker