Compartilhar via


Como localizar e substituir texto em documentos programaticamente

O objeto de Find é um membro de Selection e objetos de Range , e você pode usar um para procurar pelo texto em documentos Microsoft Office Word.Substitua o comando é uma extensão de comando de localização.

Use um objeto de Find o loop com um documento e uma pesquisa Microsoft Office Word para texto, formatação, ou o estilo específico e, use a propriedade de Replacement para substituir qualquer um dos itens localizados.

Aplicável a: As informações neste tópico se aplicam a projetos de nível de documento e projetos de nível de aplicativo para Word 2013 e Word 2010. Para obter mais informações, consulte Recursos disponíveis pelo aplicativo do Office e o tipo de projeto.

Usando um objeto de seleção

Quando você usa um objeto de Selection para localizar o texto, todos os critérios de pesquisa que você especifique são aplicados somente com o texto atualmente selecionado.Se Selection é um ponto de inserção, então o documento é procurado.Quando o item for encontrado que corresponde aos critérios de pesquisa, é automaticamente selecionado.

É importante observar que os critérios de Find são cumulativos, o que significa que os critérios são adicionados aos critérios de pesquisa anteriores.Formatação claro das pesquisas anteriores usando o método de ClearFormatting antes de pesquisa.

Para localizar texto usando um objeto de seleção

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

    Dim findText As String = "find me"
    
    object findText = "find me";
    
  2. Desmarque a formatação das pesquisas anteriores.

    Application.Selection.Find.ClearFormatting()
    
    Application.Selection.Find.ClearFormatting();
    
  3. Executar uma pesquisa e exibir uma caixa de mensagem com os resultados.

    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 completo.

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

Usando um objeto de intervalo

Usar um objeto de Range permite que você procurar pelo texto sem exibir algo na interface do usuário.O objeto de Find retorna True se o texto estiver localizado que corresponde aos critérios de pesquisa, e False caso contrário.Também redefine o objeto de Range para coincidir com os critérios de pesquisa se o texto for encontrado.

Para localizar texto usando um objeto de intervalo

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

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

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

    O exemplo de código pode ser usado em um suplemento ao aplicativo.este exemplo usa o documento ativo.

    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 a propriedade de Find do objeto de Range primeiro, desmarque todas as opções de formatação existentes, e procurare-as na cadeia de caracteres localizar-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 selecione Range para torná-lo visível.

        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.

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

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

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

Procure e substitua o texto em documentos

O código a seguir procura a seleção atual e substitua todas as ocorrências da cadeia de caracteres localizar-me com a cadeia de caracteres funde.

Para procurar por e substitua o texto em documentos

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

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

    A classe de Find tem um método de ClearFormatting , e a classe de Replacement também tem seu próprio método de ClearFormatting .Quando você estiver executando operações de localização e substituição, você deve usar o método de ClearFormatting dos dois objetos.Se você utiliza apenas no objeto de Find , você pode obter resultados não-antecipados no texto de substituição.

  2. Use o método de Execute do objeto de Find para substituir cada item encontrado.Para especificar que os itens para substituir, usa o parâmetro de Replace .Este parâmetro pode ser um dos seguintes valores de WdReplace :

Consulte também

Tarefas

Como definir opções de pesquisa no Word programaticamente

Como percorrer itens encontrados em documentos programaticamente

Como definir e selecionar intervalos em documentos programaticamente

Como restaurar seleções após pesquisas programaticamente

Conceitos

Parâmetros opcionais em soluções do Office