Postupy: hledání a nahrazování textu v dokumentech prostřednictvím kódu programu

Findobjekt je členem Selection objektů i a Range a můžete použít jeden z nich k hledání textu v Microsoft Office dokumentů aplikace Word. Příkaz replace je rozšíření příkazu find.

pomocí Find objektu projděte Microsoft Office dokumentu aplikace Word a vyhledejte konkrétní text, formátování nebo styl a pomocí Replacement vlastnosti nahraďte libovolnou nalezenou položku.

Platí pro: Informace v tomto tématu se vztahují na - projekty na úrovni dokumentu a projekty doplňku VSTO - ve Wordu. Další informace najdete v tématu dostupné funkce podle aplikace systému Office a typu projektu.

Použití objektu výběru

Když pomocí Selection objektu vyhledáte text, všechna zadaná kritéria hledání se použijí jenom proti aktuálně vybranému textu. Pokud Selection je místo vložení, je prohledáván dokument. Když se najde položka, která odpovídá kritériím hledání, je automaticky vybraná.

Je důležité si uvědomit, že Find kritéria jsou kumulativní, což znamená, že jsou do předchozích kritérií hledání přidána kritéria. Vymažte formátování z předchozích hledání pomocí ClearFormatting metody před hledáním.

Vyhledání textu pomocí objektu výběru

  1. Přiřaďte k proměnné hledaný řetězec.

    Dim findText As String = "find me"
    
    object findText = "find me";
    
  2. Vymažte formátování z předchozích hledání.

    Application.Selection.Find.ClearFormatting()
    
    Application.Selection.Find.ClearFormatting();
    
  3. Spusťte hledání a zobrazí se okno se zprávou s výsledky.

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

    Následující příklad ukazuje metodu Complete.

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

Použití objektu Range

Pomocí Range objektu můžete hledat text bez zobrazení cokoli v uživatelském rozhraní. FindObjekt vrátí hodnotu true , pokud je nalezen text, který odpovídá kritériím hledání, a hodnotu false , pokud tomu tak není. Předefinuje také Range objekt tak, aby odpovídal kritériím hledání, pokud je nalezen text.

Vyhledání textu pomocí objektu Range

  1. Definujte Range objekt, který se skládá z druhého odstavce v dokumentu.

    Následující příklad kódu lze použít v přizpůsobení na úrovni dokumentu.

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

    následující příklad kódu lze použít v doplňku VSTO. Tento příklad používá aktivní dokument.

    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. Pomocí Find vlastnosti Range objektu nejprve vymažte všechny existující možnosti formátování a vyhledejte řetězec Najít.

    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. Zobrazit výsledky hledání v okně se zprávou a vybrat Range ho, aby byl viditelný.

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

    Pokud vyhledávání neproběhne úspěšně, je vybrán druhý odstavec; v případě úspěchu se zobrazí kritéria hledání.

    Následující příklad ukazuje kompletní kód pro přizpůsobení na úrovni dokumentu. Chcete-li použít tento příklad, spusťte kód z ThisDocument třídy v 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(); 
    }
    

    následující příklad ukazuje kompletní kód pro doplněk VSTO. Chcete-li použít tento příklad, spusťte kód z ThisAddIn třídy v 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();
    }
    

Hledání a nahrazování textu v dokumentech

Následující kód vyhledá aktuální výběr a nahradí všechny výskyty řetězce nalezené řetězcem .

Hledání a nahrazování textu v dokumentech

  1. Do ThisDocument třídy nebo v projektu přidejte následující vzorový kód ThisAddIn .

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

    FindTřída má ClearFormatting metodu a Replacement Třída má také svou vlastní ClearFormatting metodu. Při provádění operací Find-and-nahrazování je nutné použít metodu ClearFormatting obou objektů. Použijete-li jej pouze na Find objekt, může se stát, že se nepředpokládá výsledek nahrazujícího textu.

  2. Použijte Execute metodu Find objektu k nahrazení každé nalezené položky. Chcete-li určit, které položky mají být nahrazeny, použijte parametr Replace . Tento parametr může být jedna z následujících WdReplace hodnot:

Viz také