Gewusst wie: Suchen nach Text in Dokumenten
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.
Betrifft: Die Informationen in diesem Thema betreffen Projekte auf Dokument- und auf Anwendungsebene für Word 2007 und Word 2010. Weitere Informationen finden Sie unter Verfügbare Funktionen nach Office-Anwendung und Projekttyp.
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
Weisen Sie einer Variable eine Suchzeichenfolge zu.
Dim findText As String = "find me"
object findText = "find me";
Entfernen Sie die Formatierung aus vorangegangenen Suchvorgängen.
Application.Selection.Find.ClearFormatting()
Application.Selection.Find.ClearFormatting();
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
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;
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)) {
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