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
Assegnare una stringa di ricerca a una variabile.
Cancellare la formattazione dalle ricerche precedenti.
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
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.
L'esempio di codice seguente può essere usato in un componente aggiuntivo VSTO. L'esempio usa il documento attivo.
Usando la Find proprietà dell'oggetto Range , cancellare prima tutte le opzioni di formattazione esistenti e quindi cercare la stringa trovarmi.
Visualizzare i risultati della ricerca in una finestra di messaggio e selezionare l'oggetto Range per renderla visibile.
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
Aggiungere il codice di esempio seguente alla classe
ThisDocument
oThisAddIn
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.
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:
wdReplaceAll sostituisce tutti gli elementi trovati.
wdReplaceNone non sostituisce alcun elemento trovato.
wdReplaceOne sostituisce il primo elemento trovato.
Contenuto correlato
- Procedura: Impostare le opzioni di ricerca a livello di codice in Word
- Procedura: scorrere a livello di codice gli elementi trovati nei documenti
- Procedura: Definire e selezionare intervalli a livello di codice nei documenti
- Procedura: Ripristinare le selezioni a livello di codice dopo le ricerche
- Parametri facoltativi nelle soluzioni Office