Porady: Programowane wyszukiwanie i zastępowanie tekstu w dokumentach

Find Obiektu jest członkiem obu Selection i Range obiektów, a można użyć dowolnego z wyszukiwania tekstu w dokumentach programu Microsoft Office Word.Polecenie Zamień jest rozszerzeniem polecenia Znajdź.

Użyj Find obiektu w pętli do dokumentu programu Microsoft Office Word i wyszukiwanie konkretnego tekstu, formatowania lub stylu, a następnie użyj Replacement właściwość, aby zamienić elementy znalezione.

Zastosowanie: Informacje przedstawione w tym temacie mają zastosowanie do projektów na poziomie dokumentu i aplikacji obsługiwanych w programach Word 2013 i Word 2010. Aby uzyskać więcej informacji, zobacz Funkcje dostępne w aplikacjach pakietu Office i typ projektu.

Za pomocą obiektu Selection

Podczas korzystania z Selection obiekt, aby znaleźć tekst, każde wyszukiwanie, należy określić kryteria są stosowane tylko wobec aktualnie zaznaczonego tekstu.Jeśli Selection jest punkt wstawiania, a następnie dokument będzie przeszukiwana.Gdy element zostanie znaleziony, który spełnia kryteria wyszukiwania, jest automatycznie zaznaczone.

Ważne jest, aby pamiętać, że Find kryteria kumulują się, co oznacza, że kryteria są dodawane do poprzednie kryteria wyszukiwania.Wyczyść formatowanie poprzednich wyników wyszukiwania za pomocą ClearFormatting metody przed wyszukiwania.

Aby znaleźć tekst za pomocą obiektu Selection

  1. Ciąg wyszukiwania można przypisać do zmiennej.

    Dim findText As String = "find me"
    
    object findText = "find me";
    
  2. Wyczyść formatowanie poprzednich wyników wyszukiwania.

    Application.Selection.Find.ClearFormatting()
    
    Application.Selection.Find.ClearFormatting();
    
  3. Wykonać wyszukiwanie i wyświetlić okno komunikatu z wyników.

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

Poniższy przykład przedstawia metodę kompletny.

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

Za pomocą obiektu Range

Za pomocą Range obiektu umożliwia wyszukiwanie tekstu bez wyświetlania nic w interfejsie użytkownika.Find Zwraca obiekt True Jeśli tekst zostanie znaleziony, który pasuje do kryteriów wyszukiwania i False , jeśli tak nie jest.Również nowo Range obiektu do pasujące do kryteriów wyszukiwania, jeśli zostanie znaleziony tekst.

Aby znaleźć tekst za pomocą obiektu Range

  1. Definiowanie Range obiekt, który składa się z drugiego akapitu w dokumencie.

    Poniższy przykład kodu służy dostosowywania poziomie dokumentu.

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

    Poniższy przykład kodu, można w poziomie aplikacji dodatek.W tym przykładzie użyto aktywnego dokumentu.

    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. Za pomocą Find właściwość Range obiektu, najpierw wyczyść wszystkie istniejące opcje formatowania, a następnie wyszukać ciąg mnie znaleźć.

    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. Wyświetlanie wyników wyszukiwania w oknie komunikatu, a następnie wybierz Range aby stał się widoczny.

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

    Jeśli wyszukiwanie zakończy się niepowodzeniem, jest zaznaczony akapit drugi; Jeśli się powiedzie, kryteria wyszukiwania są wyświetlane.

Kompletny kod dla dostosowania poziomu dokumentu można znaleźć w poniższym przykładzie.Aby wykorzystać ten przykład, należy uruchomić kod z ThisDocument klasy do projektu.

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

Kompletny kod dla dodatku poziomie aplikacji można znaleźć w poniższym przykładzie.Aby wykorzystać ten przykład, należy uruchomić kod z ThisAddIn klasy do projektu.

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

Wyszukiwanie i zastępowanie tekstu w dokumentach

Poniższy kod przeszukuje aktualnie zaznaczony obszar i zamienia wszystkie wystąpienia ciągu mnie znaleźć z ciągiem znalezione.

Aby wyszukać i zamienić tekst w dokumentach

  1. Dodaj poniższy przykład kodu do ThisDocument lub ThisAddIn klasy do projektu.

    Private Sub SearchReplace()
        Dim FindObject As Word.Find = Application.Selection.Find
        With FindObject
            .ClearFormatting()
            .Text = "find me"
            .Replacement.ClearFormatting()
            .Replacement.Text = "Found"
            .Execute(Replace:=Word.WdReplace.wdReplaceAll)
        End With 
    End Sub
    
    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);
    }
    

    Find Klasa ma ClearFormatting metoda i Replacement klasy również ma swój własny ClearFormatting metoda.Podczas przeprowadzania operacji znajdowania i zamieniania, należy użyć ClearFormatting metoda obu obiektów.Jeśli używasz tylko na Find obiektu, może uzyskać niespodziewane wyniki w tekście.

  2. Użycie Execute metoda Find obiekt, aby zastąpić każdego znalezionego elementu.Aby określić elementy, które należy zastąpić, Replace parametru.Ten parametr może być jedną z następujących WdReplace wartości:

Zobacz też

Zadania

Porady: Programowane ustawianie opcji wyszukiwania w programie Word

Porady: Programowane przechodzenie w pętli poprzez znalezione elementy w dokumentach

Porady: Programowane definiowanie i zaznaczanie zakresów w dokumentach

Porady: Programowane przywracanie zaznaczenia po wyszukiwaniu

Koncepcje

Parametry opcjonalne w rozwiązaniach Office