Como: programaticamente, pesquisar e substituir texto em documentosHow to: Programmatically search for and replace text in documents

O Find objeto é um membro de ambos os Selection e o Range objetos e você pode usar qualquer um para pesquisar texto em documentos do Microsoft Office Word.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. O comando Substituir é uma extensão do comando find.The replace command is an extension of the find command.

Usar um Find para executar um loop por meio de um documento do Microsoft Office Word e pesquisa de texto específico, a formatação ou o estilo do objeto e usar o Replacement propriedade para substituir qualquer um dos itens encontrados.Use a Find object to loop through a Microsoft Office Word document and search for specific text, formatting, or style, and use the Replacement property to replace any of the items found.

Aplica-se a: as informações neste tópico se aplicam ao documento-projetos e VSTO adicionar nível-nos projetos do Word.Applies to: The information in this topic applies to document-level projects and VSTO Add-in projects for Word. Para obter mais informações, consulte recursos disponíveis por tipo de projeto e aplicativo do Office.For more information, see Features available by Office application and project type.

Usar um objeto de seleçãoUse a Selection object

Quando você usa um Selection objeto localizar texto, qualquer pesquisa critérios especificados por você são aplicados apenas em relação a no momento, o texto selecionado.When you use a Selection object to find text, any search criteria you specify are applied only against currently selected text. Se o Selection é um ponto de inserção, em seguida, o documento será pesquisado.If the Selection is an insertion point, then the document is searched. Quando o item for encontrado que corresponde aos critérios de pesquisa, ele é selecionado automaticamente.When the item is found that matches the search criteria, it is automatically selected.

É importante observar que o Find critérios são cumulativos, o que significa que os critérios são adicionados aos critérios de pesquisa anterior.It is important to note that the Find criteria are cumulative, which means that criteria are added to previous search criteria. Limpar formatação de pesquisas anteriores usando o ClearFormatting método antes da pesquisa.Clear formatting from previous searches by using the ClearFormatting method prior to the search.

Para localizar texto usando um objeto SelectionTo find text using a Selection object

  1. Atribua uma cadeia de caracteres de pesquisa a uma variável.Assign a search string to a variable.

    Dim findText As String = "find me"
    
    object findText = "find me";
    
  2. Limpe formatação de pesquisas anteriores.Clear formatting from previous searches.

    Application.Selection.Find.ClearFormatting()
    
    Application.Selection.Find.ClearFormatting();
    
  3. Executa a pesquisa e exibe uma caixa de mensagem com os resultados.Execute the search and display a message box with the results.

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

    O exemplo a seguir mostra o método complete.The following example shows the complete method.

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

Usar um objeto de intervaloUse a Range object

Usando um Range objeto permite que você procure texto sem exibir qualquer coisa na interface do usuário.Using a Range object enables you to search for text without displaying anything in the user interface. O Find objeto retorna verdadeira se o texto for encontrado que corresponde aos critérios de pesquisa, e False se não existir.The Find object returns True if text is found that matches the search criteria, and False if it does not. Ele também redefine o Range objeto para corresponder aos critérios de pesquisa, se o texto for encontrado.It also redefines the Range object to match the search criteria if the text is found.

Para localizar o texto usando um objeto de intervaloTo find text using a Range object

  1. Definir um Range objeto que consiste o segundo parágrafo no documento.Define a Range object that consists of the second paragraph in the document.

    O exemplo de código a seguir pode ser usado em uma personalização no nível de documento.The following code example can be used in a document-level customization.

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

    O exemplo de código a seguir pode ser usado em um suplemento do VSTO.The following code example can be used in a VSTO Add-in. Este exemplo usa o documento ativo.This example uses the active document.

    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. Usando o Find propriedade do Range do objeto, primeiro desmarque quaisquer opções de formatação existente e, em seguida, procure a cadeia de caracteres estou me.Using the Find property of the Range object, first clear any existing formatting options, and then search for the string 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. Exibir os resultados da pesquisa em uma caixa de mensagem e, em seguida, selecione o Range para torná-la visível.Display the results of the search in a message box, and select the Range to make it visible.

        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(); 
    

    Se a pesquisa falhar, o segundo parágrafo está selecionado. Se tiver êxito, os critérios de pesquisa são exibidos.If the search fails, the second paragraph is selected; if it succeeds, the search criteria are displayed.

    O exemplo a seguir mostra o código completo para uma personalização no nível de documento.The following example shows the complete code for a document-level customization. Para usar este exemplo, execute o código no ThisDocument classe em seu projeto.To use this example, run the code from the ThisDocument class in your project.

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

    O exemplo a seguir mostra o código completo para um suplemento do VSTO.The following example shows the complete code for a VSTO Add-in. Para usar este exemplo, execute o código no ThisAddIn classe em seu projeto.To use this example, run the code from the ThisAddIn class in your project.

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

Pesquisar e substituir texto em documentosSearch for and replace text in documents

O código a seguir pesquisa a seleção atual e substitui todas as ocorrências da cadeia de caracteres estou me com a cadeia de caracteres encontrada.The following code searches the current selection and replaces all of the occurrences of the string find me with the string Found.

Para pesquisar e substituir texto em documentosTo search for and replace text in documents

  1. Adicione o seguinte código de exemplo para o ThisDocument ou ThisAddIn classe em seu projeto.Add the following example code to the ThisDocument or ThisAddIn class in your project.

    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
    
    private void SearchReplace()
    {
        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);
    }
    

    O Find classe tem um ClearFormatting método e o Microsoft.Office.Interop.Word.Replacement classe também tem seu próprio ClearFormatting método.The Find class has a ClearFormatting method, and the Microsoft.Office.Interop.Word.Replacement class also has its own ClearFormatting method. Quando você estiver executando operações de localizar e substituir, você deve usar o método ClearFormatting dos dois objetos.When you are performing find-and-replace operations, you must use the ClearFormatting method of both objects. Se você usá-lo somente no Find do objeto, você poderá obter resultados inesperados no texto de substituição.If you use it only on the Find object, you might get unanticipated results in the replacement text.

  2. Use o Execute método da Find objeto a substituir cada item encontrado.Use the Execute method of the Find object to replace each found item. Para especificar quais itens para substituir, use o substituir parâmetro.To specify which items to replace, use the Replace parameter. Esse parâmetro pode ser um dos seguintes Microsoft.Office.Interop.Word.WdReplace valores:This parameter can be one of the following Microsoft.Office.Interop.Word.WdReplace values:

Consulte tambémSee also

Como: definir programaticamente as opções de pesquisa no Word How to: Programmatically set search options in Word
Como: executar um loop por meio de itens encontrados em documentos programaticamente How to: Programmatically loop through found items in documents
Como: definir e selecionar intervalos em documentos programaticamente How to: Programmatically define and select ranges in documents
Como: programaticamente restaurar seleções após pesquisas How to: Programmatically restore selections after searches
Parâmetros opcionais em soluções do OfficeOptional parameters in Office solutions