Condividi tramite


Cercare e sostituire testo nei documenti a livello di codice

L'oggetto Find è un membro degli oggetti Selection e Range, ognuno dei quali può essere usato per cercare testo in documenti di Microsoft Office Word. Il comando di sostituzione è un'estensione del comando di ricerca.

Usare un oggetto Find per scorrere in ciclo un documento di Microsoft Office Word e cercare testo, formattazione o uno stile specifico e quindi usare la proprietà Replacement per sostituire tutti gli elementi trovati.

Si applica a: le informazioni contenute in questo argomento si applicano ai progetti a livello di documento e ai progetti di componente aggiuntivo VSTO per Word. Per altre informazioni, vedere Funzionalità disponibili per app Office lication e tipo di progetto.

Utilizzare un oggetto Selection

Quando si usa un oggetto Selection per trovare testo, tutti i criteri di ricerca specificati vengono applicati solo in base al testo attualmente selezionato. Se Selection è un punto di inserimento, la ricerca viene eseguita nel documento. Quando viene trovato un elemento che corrisponde ai criteri di ricerca, l'elemento viene automaticamente selezionato.

È importante notare che i criteri Find sono cumulativi, ovvero vengono aggiunti a criteri di ricerca precedenti. Cancellare la formattazione dalle ricerche precedenti usando il metodo ClearFormatting prima della ricerca.

Per trovare testo usando un oggetto Selection

  1. Assegnare una stringa di ricerca a una variabile.

    object findText = "find me";
    
  2. Cancellare la formattazione dalle ricerche precedenti.

    Application.Selection.Find.ClearFormatting();
    
  3. Eseguire la ricerca e visualizzare una finestra di messaggio con i risultati.

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

    L'esempio seguente mostra il metodo completo.

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

Utilizzare un oggetto Range

L'uso di un oggetto Range permette di cercare testo senza alcuna visualizzazione nell'interfaccia utente. L'oggetto Find restituisce True se viene trovato testo che corrisponde ai criteri di ricerca e False in caso contrario. Ridefinisce inoltre l'oggetto Range in modo che corrisponda ai criteri di ricerca se viene trovato testo.

Per trovare testo usando un oggetto Range

  1. Definire un oggetto Range costituito dal secondo paragrafo del documento.

    L'esempio di codice seguente può essere usato in una personalizzazione a livello di documento.

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

    L'esempio di codice seguente può essere usato in un componente aggiuntivo VSTO. L'esempio usa il documento attivo.

    Word.Document document = this.Application.ActiveDocument;
    Word.Range rng = document.Paragraphs[2].Range;
    
  2. Usando la Find proprietà dell'oggetto Range , cancellare prima tutte le opzioni di formattazione esistenti e quindi cercare la stringa trovarmi.

    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. Visualizzare i risultati della ricerca in una finestra di messaggio e selezionare l'oggetto Range per renderla visibile.

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

    Se la ricerca non riesce, viene selezionato il secondo paragrafo, altrimenti vengono visualizzati i criteri di ricerca.

    L'esempio seguente mostra il codice completo per una personalizzazione a livello di documento. Per usare questo esempio, eseguire il codice dalla classe ThisDocument nel progetto.

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

L'esempio seguente mostra il codice completo per un componente aggiuntivo VSTO. Per usare questo esempio, eseguire il codice dalla classe ThisAddIn nel progetto.

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

Cercare e sostituire il testo nei documenti

Il codice seguente cerca la selezione corrente e sostituisce tutte le occorrenze della stringa trovami con la stringa Trovato.

Per cercare e sostituire testo in documenti

  1. Aggiungere il codice di esempio seguente alla classe ThisDocument o ThisAddIn nel progetto.

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

    La classe Find ha un metodo ClearFormatting e anche la classe Replacement ha il proprio metodo ClearFormatting. Quando si eseguono operazioni di ricerca e sostituzione, è necessario utilizzare il metodo ClearFormatting di entrambi gli oggetti. Se si usa solo il metodo per l'oggetto Find, il testo di sostituzione potrebbe restituire risultati imprevisti.

  2. Usare il metodo Execute dell'oggetto Find per sostituire ogni elemento trovato. Per specificare gli elementi da sostituire, usare il parametro Replace . Questo parametro può avere uno dei valori WdReplace seguenti: