プログラムによって、ドキュメント内の見つかった項目をループ処理する

Find クラスには、Found プロパティがあります。これは、検索対象の項目が見つかるたびに true を返します。 Range メソッドを使用して、 Execute 内で見つかったすべてのインスタンスをループできます。

適用対象: このトピックの情報は、Word のドキュメント レベルのプロジェクトおよび VSTO アドインのプロジェクトに適用されます。 詳細については、「Office アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

見つかった項目をループするには

  1. Range オブジェクトを宣言します。

    次のコード例はドキュメント レベルのカスタマイズで使用できます。

    Word.Range rng = this.Content;
    

    次のコード例は VSTO アドインで使用できます。 この例ではアクティブ ドキュメントを使用します。

    Word.Document document = this.Application.ActiveDocument;
    Word.Range rng = document.Content;
    
  2. ループ内で Found プロパティを使用し、文書内に出現する特定の文字列をすべて検索して、文字列が見つかるたびに整数値を 1 ずつインクリメントします。

    rng.Find.ClearFormatting(); 
    rng.Find.Forward = true; 
    rng.Find.Text = "find me"; 
    
    rng.Find.Execute(
        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, ref missing);
    
    while (rng.Find.Found) 
    { 
        intFound++;
        rng.Find.Execute(
            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, ref missing);
    }
    
  3. 文字列が見つかった回数をメッセージ ボックスに表示します。

    MessageBox.Show("Strings found: " + intFound.ToString());
    

    このメソッドを使ったサンプル コード全体を次に示します。

ドキュメント レベルのカスタマイズの例

ドキュメント レベルのカスタマイズの項目をループするには

  1. 次の例は、ドキュメント レベルのカスタマイズのコード全体を示しています。 このコードを使用するには、プロジェクトの ThisDocument クラスから実行します。

    private void FindLoop() 
    { 
        int intFound = 0; 
        Word.Range rng = this.Content; 
    
        rng.Find.ClearFormatting(); 
        rng.Find.Forward = true; 
        rng.Find.Text = "find me"; 
    
        rng.Find.Execute(
            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, ref missing);
    
        while (rng.Find.Found) 
        { 
            intFound++;
            rng.Find.Execute(
                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, ref missing);
        } 
    
        MessageBox.Show("Strings found: " + intFound.ToString()); 
    }
    

VSTO アドインの例

VSTO アドインの項目をループするには

  1. 次の例は、VSTO アドインのコード全体を示しています。 このコードを使用するには、プロジェクトの ThisAddIn クラスから実行します。

    private void FindLoop()
    {
        int intFound = 0;
        Word.Document document = this.Application.ActiveDocument;
        Word.Range rng = document.Content;
    
        rng.Find.ClearFormatting();
        rng.Find.Forward = true;
        rng.Find.Text = "find me";
    
        rng.Find.Execute(
            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, ref missing);
    
        while (rng.Find.Found)
        {
            intFound++;
            rng.Find.Execute(
                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, ref missing);
        }
    
        MessageBox.Show("Strings found: " + intFound.ToString());
    }