Hledání a nahrazení textu v dokumentech prostřednictvím kódu programu

Objekt Find je členem objektů Selection i Range objektů a můžete použít jeden z nich k vyhledání textu v systém Microsoft Office wordových dokumentech. Příkaz nahradit je rozšíření příkazu find.

Pomocí objektu Find můžete procházet systém Microsoft Office wordovým dokumentem a hledat konkrétní text, formátování nebo styl a tuto vlastnost použít Replacement k nahrazení nalezených položek.

Platí pro: Informace v tomto tématu platí pro projekty na úrovni dokumentu a projekty doplňků VSTO pro Word. Další informace naleznete v tématu Funkce dostupné aplikace Office lication a typu projektu.

Použití objektu Výběru

Když k vyhledání textu použijete Selection objekt, použijí se všechna zadaná kritéria hledání pouze pro aktuálně vybraný text. Selection Pokud je kurzorem, vyhledá se dokument. Když se najde položka, která odpovídá kritériím hledání, vybere se automaticky.

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

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

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

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

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

    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 úplnou metodu.

    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

Range Použití objektu umožňuje hledat text bez zobrazení čehokoli v uživatelském rozhraní. Objekt Find vrátí hodnotu True , pokud je nalezen text, který odpovídá kritériím hledání, a False , pokud ne. Objekt také předefinuje Range tak, aby odpovídal kritériím hledání, pokud se najde text.

Vyhledání textu pomocí objektu Range

  1. Range Definujte 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.

    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.

    Word.Document document = this.Application.ActiveDocument;
    Word.Range rng = document.Paragraphs[2].Range;
    
  2. Find Pomocí vlastnosti objektu Range nejprve vymažte všechny existující možnosti formátování a pak vyhledejte řetězec najít mě.

    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. Zobrazte výsledky hledání v poli se zprávou a vyberte Range , aby byl viditelný.

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

    Pokud hledání selže, je vybrán druhý odstavec; pokud bude úspěšný, zobrazí se kritéria hledání.

    Následující příklad ukazuje úplný kód pro přizpůsobení na úrovni dokumentu. Pokud chcete tento příklad použít, spusťte kód z ThisDocument třídy v projektu.

    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 úplný kód doplňku VSTO. Pokud chcete tento příklad použít, spusťte kód z ThisAddIn třídy v projektu.

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 nahrazení textu v dokumentech

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

Vyhledání a nahrazení textu v dokumentech

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

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

    Třída Find má metodu ClearFormatting a třída má také vlastní ClearFormatting metoduReplacement. Při provádění operací find-and-replace je nutné použít ClearFormatting metody obou objektů. Pokud ho použijete pouze u objektu Find , může dojít k neočekáženým výsledkům v náhradním textu.

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