Freigeben über


Gewusst wie: Suchen nach Text in Dokumenten

Aktualisiert: November 2007

Betrifft

Die Informationen in diesem Thema gelten nur für die angegebenen Projekte und Versionen von Visual Studio Tools for Office von Microsoft Office.

Projekttyp

  • Projekte auf Dokumentebene

  • Projekte auf Anwendungsebene

Microsoft Office-Version

  • Word 2003

  • Word 2007

Weitere Informationen hierzu finden Sie unter Verfügbare Features nach Anwendung und Projekttyp.

Das Find-Objekt ist ein Member sowohl des Selection-Objekts als auch des Range-Objekts. Mit beiden Objekten können Sie in Microsoft Office Word-Dokumenten nach Text suchen. Der Replace-Befehl ist eine Erweiterung des Find-Befehls. Informationen über das Ersetzen von Text in Dokumenten finden Sie unter Gewusst wie: Suchen und Ersetzen von Text in Dokumenten.

Verwenden eines Selection-Objekts

Wenn Sie ein Selection-Objekt zum Suchen von Text verwenden, werden die angegebenen Suchkriterien nur auf den ausgewählten Text angewendet. Wenn es sich bei Selection um eine Einfügemarke handelt, wird das gesamte Dokument durchsucht. Wenn ein Element gefunden wird, das mit den Suchkriterien übereinstimmt, wird es automatisch markiert.

Beachten Sie, dass die Find-Kriterien kumulativ sind. Das heißt, dass die Kriterien den vorherigen Suchkriterien hinzugefügt werden. Verwenden Sie vor der Suche die ClearFormatting-Methode, um die Formatierungen aus vorangegangenen Suchvorgängen zu entfernen.

So suchen Sie mit einem Selection-Objekt nach Text

  1. Weisen Sie einer Variable eine Suchzeichenfolge zu.

    Dim findText As String = "find me"
    
    object findText = "find me";
    
  2. Entfernen Sie die Formatierung aus vorangegangenen Suchvorgängen.

    Application.Selection.Find.ClearFormatting()
    
    Application.Selection.Find.ClearFormatting();
    
  3. Führen Sie die Suche aus, und zeigen Sie ein Meldungsfeld mit den Ergebnissen an.

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

Im folgenden Beispiel wird die vollständige Methode gezeigt.

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

Verwenden eines Range-Objekts

Eine Suche nach Text mit dem Range-Objekt kann ganz ohne Anzeige auf der Benutzeroberfläche durchgeführt werden. Die Find-Methode gibt True zurück, wenn Text gefunden wird, der mit den Suchkriterien übereinstimmt. Andernfalls gibt sie False zurück. Wenn der Text gefunden wird, wird außerdem das Range-Objekt neu definiert, um eine Übereinstimmung mit den Suchkriterien herzustellen.

So suchen Sie mit einem Range-Objekt nach Text

  1. Definieren Sie ein Range-Objekt, das aus dem zweiten Absatz des Dokuments besteht.

    Das folgende Codebeispiel kann in einer Anpassung auf Dokumentebene verwendet werden.

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

    Das folgende Codebeispiel kann in einem Add-In auf Anwendungsebene verwendet werden. In diesem Beispiel wird das aktive Dokument verwendet.

    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. Mithilfe der Find-Eigenschaft des Range-Objekts entfernen Sie zunächst alle vorhandenen Formatierungsoptionen und suchen anschließend nach der Zeichenfolge find 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. Zeigen Sie die Ergebnisse der Suche in einem Meldungsfeld an, und markieren Sie Range, um den Bereich sichtbar zu machen.

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

    Wenn die Suche fehlschlägt, wird der zweite Absatz markiert, bei Erfolg wird das Suchergebnis angezeigt.

Im folgenden Beispiel wird der vollständige Code für eine Anpassung auf Dokumentebene gezeigt. Wenn Sie dieses Beispiel verwenden möchten, führen Sie den Code von der ThisDocument-Klasse im Projekt aus.

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

Im folgenden Beispiel wird der vollständige Code für ein Add-In auf Anwendungsebene gezeigt. Wenn Sie dieses Beispiel verwenden möchten, führen Sie den Code von der ThisAddIn-Klasse im Projekt aus.

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

Siehe auch

Aufgaben

Gewusst wie: Suchen und Ersetzen von Text in Dokumenten

Gewusst wie: Festlegen von Suchoptionen in Word

Gewusst wie: Durchlaufen gefundener Elemente in Dokumenten

Gewusst wie: Definieren und Markieren von Bereichen in Dokumenten

Gewusst wie: Wiederherstellen der Auswahl nach Suchvorgängen

Konzepte

Optionale Parametern in Office-Projektmappen