Compartilhar via


Executar um loop programaticamente por itens encontrados em documentos

A Find classe tem uma Found propriedade, que retorna true sempre que um item pesquisado é encontrado. Você pode percorrer todas as instâncias encontradas em um Range usando o Execute método.

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.

Para percorrer os itens encontrados

  1. Declare um objeto Range.

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

    Word.Range rng = this.Content;
    

    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.Content;
    
  2. Use a propriedade em um loop para procurar todas as ocorrências da cadeia de caracteres no documento e incremente uma variável inteira em 1 cada vez que a Found cadeia de caracteres for encontrada.

    rng.Find.ClearFormatting(); 
    rng.Find.Forward = true; 
    rng.Find.Text = "find me"; 
    
    rng.Find.Execute(
        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, ref missing);
    
    while (rng.Find.Found) 
    { 
        intFound++;
        rng.Find.Execute(
            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, ref missing);
    }
    
  3. Exibir o número de vezes que a cadeia de caracteres foi encontrada em uma caixa de mensagem.

    MessageBox.Show("Strings found: " + intFound.ToString());
    

    Os exemplos a seguir mostram o método completo.

Exemplo de personalização em nível de documento

Para percorrer itens em uma personalização em nível de documento

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

    private void FindLoop() 
    { 
        int intFound = 0; 
        Word.Range rng = this.Content; 
    
        rng.Find.ClearFormatting(); 
        rng.Find.Forward = true; 
        rng.Find.Text = "find me"; 
    
        rng.Find.Execute(
            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, ref missing);
    
        while (rng.Find.Found) 
        { 
            intFound++;
            rng.Find.Execute(
                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, ref missing);
        } 
    
        MessageBox.Show("Strings found: " + intFound.ToString()); 
    }
    

Exemplo de suplemento VSTO

Para percorrer itens em um suplemento VSTO

  1. O exemplo a seguir mostra o código completo de um suplemento VSTO. Para usar esse código, execute-o a ThisAddIn partir da classe em seu projeto.

    private void FindLoop()
    {
        int intFound = 0;
        Word.Document document = this.Application.ActiveDocument;
        Word.Range rng = document.Content;
    
        rng.Find.ClearFormatting();
        rng.Find.Forward = true;
        rng.Find.Text = "find me";
    
        rng.Find.Execute(
            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, ref missing);
    
        while (rng.Find.Found)
        {
            intFound++;
            rng.Find.Execute(
                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, ref missing);
        }
    
        MessageBox.Show("Strings found: " + intFound.ToString());
    }