Procurar e substituir texto em documentos programaticamente

O Find objeto é um membro dos Selection objetos e e Range você pode usar qualquer um deles para procurar texto em documentos do Microsoft Office Word. O comando replace é uma extensão do comando find.

Use um objeto para percorrer um documento do Microsoft Office Word e procurar texto, formatação ou estilo específico e use a Replacement propriedade para substituir qualquer um Find dos itens encontrados.

Aplica-se a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de suplemento VSTO para Word. Para obter mais informações, consulte Recursos disponíveis por aplicativo e tipo de projeto do Office.

Usar um objeto Selection

Quando você usa um Selection objeto para localizar texto, todos os critérios de pesquisa especificados são aplicados somente ao texto selecionado no momento. Se o for um ponto de inserção, o Selection documento será pesquisado. Quando o item é encontrado que corresponde aos critérios de pesquisa, ele é selecionado automaticamente.

É importante notar que os critérios são cumulativos, o que significa que os Find critérios são adicionados aos critérios de pesquisa anteriores. Limpe a formatação de pesquisas anteriores usando o ClearFormatting método anterior à pesquisa.

Para localizar texto usando um objeto Selection

  1. Atribua uma cadeia de caracteres de pesquisa a uma variável.

    object findText = "find me";
    
  2. Limpar a formatação de pesquisas anteriores.

    Application.Selection.Find.ClearFormatting();
    
  3. Execute a pesquisa e exiba uma caixa de mensagem com os resultados.

    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 todo o método .

    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 Range

O uso de um Range objeto permite que você pesquise texto sem exibir nada na interface do usuário. O Find objeto retornará True se for encontrado um texto que corresponda aos critérios de pesquisa e False se não corresponder. Ele também redefine o objeto para corresponder aos critérios de pesquisa se o Range texto for encontrado.

Para localizar texto usando um objeto Range

  1. Defina um Range objeto que consiste no segundo parágrafo do documento.

    O exemplo de código a seguir pode ser usado em uma personalização em nível de documento.

    Word.Range rng = this.Paragraphs[2].Range;
    

    O exemplo de código a seguir pode ser usado em um suplemento VSTO. Este exemplo usa o documento ativo.

    Word.Document document = this.Application.ActiveDocument;
    Word.Range rng = document.Paragraphs[2].Range;
    
  2. Usando a Find propriedade do objeto, primeiro limpe todas as Range opções de formatação existentes e, em seguida, procure a cadeia de caracteres Localizar-me.

    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. Exiba os resultados da pesquisa em uma caixa de mensagem e selecione a Range para torná-la visível.

        MessageBox.Show("Text found.");
    } 
    else 
    { 
        MessageBox.Show("Text not found.");
    } 
    
    rng.Select();
    

    Se a pesquisa falhar, o segundo parágrafo será selecionado; Se for bem-sucedido, os critérios de pesquisa serão exibidos.

    O exemplo a seguir mostra o código completo para uma personalização em nível de documento. Para usar este exemplo, execute o ThisDocument código da classe em seu projeto.

    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 de um suplemento VSTO. Para usar este exemplo, execute o ThisAddIn código da classe em seu projeto.

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 documentos

O código a seguir pesquisa a seleção atual e substitui todas as ocorrências da cadeia de caracteres Find me pela cadeia de caracteres Found.

Para pesquisar e substituir texto em documentos

  1. Adicione o seguinte código de exemplo à ThisDocument classe ou ThisAddIn em seu projeto.

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

    A Find classe tem um ClearFormatting método, e a Replacement classe também tem seu próprio ClearFormatting método. Quando você estiver executando operações de localização e substituição, você deve usar o método ClearFormatting de ambos os objetos. Se você usá-lo apenas no objeto, poderá obter resultados imprevistos no Find texto de substituição.

  2. Use o ExecuteFind método do objeto para substituir cada item encontrado. Para especificar quais itens substituir, use o parâmetro Replace . Esse parâmetro pode usar um dos valores de WdReplace a seguir: