Udostępnij za pośrednictwem


Programowe wyszukiwanie i zastępowanie tekstu w dokumentach

Obiekt Find jest elementem członkowskim obiektów Selection i Range , a można użyć go do wyszukiwania tekstu w dokumentach programu Microsoft Office Word. Polecenie replace to rozszerzenie polecenia find.

Find Użyj obiektu do pętli w dokumencie programu Microsoft Office Word i wyszukaj konkretny tekst, formatowanie lub styl, a następnie użyj Replacement właściwości , aby zastąpić dowolny znaleziony element.

Dotyczy: informacje w tym temacie dotyczą projektów na poziomie dokumentu i projektów dodatków VSTO dla programu Word. Aby uzyskać więcej informacji, zobacz Funkcje dostępne przez aplikacja pakietu Office lication i typ projektu.

Korzystanie z obiektu Selection

Gdy używasz Selection obiektu do znajdowania tekstu, wszystkie określone kryteria wyszukiwania są stosowane tylko względem aktualnie zaznaczonego tekstu. Selection Jeśli element jest punktem wstawiania, przeszukiwany jest dokument. Po znalezieniu elementu zgodnego z kryteriami wyszukiwania zostanie on automatycznie wybrany.

Należy pamiętać, że kryteria są skumulowane, co oznacza, że Find kryteria są dodawane do poprzednich kryteriów wyszukiwania. Wyczyść formatowanie z poprzednich wyszukiwań przy użyciu ClearFormatting metody przed wyszukiwaniem.

Aby znaleźć tekst przy użyciu obiektu Zaznacz

  1. Przypisz ciąg wyszukiwania do zmiennej.

    object findText = "find me";
    
  2. Wyczyść formatowanie z poprzednich wyszukiwań.

    Application.Selection.Find.ClearFormatting();
    
  3. Wykonaj wyszukiwanie i wyświetl pole komunikatu z wynikami.

    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 kompletną metodę.

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

Korzystanie z obiektu Range

Range Użycie obiektu umożliwia wyszukiwanie tekstu bez wyświetlania niczego w interfejsie użytkownika. Obiekt Find zwraca wartość True , jeśli zostanie znaleziony tekst zgodny z kryteriami wyszukiwania i fałsz , jeśli nie. Ponadto ponownie definiuje Range obiekt tak, aby był zgodny z kryteriami wyszukiwania, jeśli tekst zostanie znaleziony.

Aby znaleźć tekst przy użyciu obiektu Range

  1. Zdefiniuj Range obiekt składający się z drugiego akapitu w dokumencie.

    Poniższy przykład kodu może być używany w dostosowywaniu na poziomie dokumentu.

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

    Poniższy przykład kodu może być używany w dodatku VSTO. W tym przykładzie użyto aktywnego dokumentu.

    Word.Document document = this.Application.ActiveDocument;
    Word.Range rng = document.Paragraphs[2].Range;
    
  2. Find Korzystając z właściwości Range obiektu, najpierw wyczyść wszystkie istniejące opcje formatowania, a następnie wyszukaj ciąg znajdź mnie.

    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świetl wyniki wyszukiwania w polu komunikatu i wybierz element Range , aby go wyświetlić.

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

    Jeśli wyszukiwanie zakończy się niepowodzeniem, zostanie wybrany drugi akapit; jeśli zakończy się powodzeniem, zostaną wyświetlone kryteria wyszukiwania.

    W poniższym przykładzie pokazano pełny kod dostosowywania na poziomie dokumentu. Aby użyć tego przykładu ThisDocument , uruchom kod z klasy w projekcie.

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

W poniższym przykładzie przedstawiono kompletny kod dodatku VSTO. Aby użyć tego przykładu ThisAddIn , uruchom kod z klasy w projekcie.

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 wyszukuje bieżące zaznaczenie i zastępuje wszystkie wystąpienia ciągu znajdź mnie ciągiem Znaleziony.

Aby wyszukać i zamienić tekst w dokumentach

  1. Dodaj następujący przykładowy kod do ThisDocument klasy or ThisAddIn w projekcie.

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

    Klasa Find ma metodę ClearFormatting , a Replacement klasa ma również własną ClearFormatting metodę. Podczas wykonywania operacji znajdowania i zastępowania należy użyć metody ClearFormatting obu obiektów. Jeśli używasz go tylko w Find obiekcie, możesz uzyskać nieprzewidziane wyniki w tekście zastępczym.

  2. Execute Użyj metody obiektu, aby zastąpić każdy znaleziony Find element. Aby określić, które elementy mają być zastępowane, użyj parametru Replace . Ten parametr może być jedną z następujących WdReplace wartości: