次の方法で共有


方法 : 文書内のテキストを検索する

更新 : 2007 年 11 月

対象

このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。

プロジェクトの種類

  • ドキュメント レベルのプロジェクト

  • アプリケーション レベルのプロジェクト

Microsoft Office のバージョン

  • Word 2003

  • Word 2007

詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。

Find オブジェクトは、Selection オブジェクトと Range オブジェクトの両方のメンバであり、このいずれかを使用して Microsoft Office Word 文書内のテキストを検索できます。Replace コマンドは、Find コマンドの拡張機能です。文書内のテキスト置換の詳細については、「方法 : ドキュメント内のテキストを検索および置換する」を参照してください。

Selection オブジェクトの使用

Selection オブジェクトを使用してテキストを検索する場合、指定した検索条件は、現在選択されているテキストにしか適用されません。Selection がカーソル位置である場合は、文書が検索対象になります。検索条件に一致する項目が見つかると、見つかった項目が自動的に選択されます。

Find の条件は累積されることに注意してください。つまり、条件は前の検索条件に追加されます。検索の前に、ClearFormatting メソッドを使用して前の検索の書式設定をクリアします。

Selection オブジェクトを使用してテキストを検索するには

  1. 検索文字列を変数に代入します。

    Dim findText As String = "find me"
    
    object findText = "find me";
    
  2. 前の検索の書式設定をクリアします。

    Application.Selection.Find.ClearFormatting()
    
    Application.Selection.Find.ClearFormatting();
    
  3. 検索を実行し、結果を示すメッセージ ボックスを表示します。

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

このメソッドの完全なコードは次のようになります。

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

Range オブジェクトの使用

Range オブジェクトを使用すると、ユーザー インターフェイスに何も表示せずに検索を実行できます。Find オブジェクトは、検索条件に一致するテキストが見つかった場合は True を返し、見つからなかった場合は False を返します。また、テキストが見つかった場合は、検索条件に合わせて Range オブジェクトを再定義します。

Range オブジェクトを使用してテキストを検索するには

  1. ドキュメントの 2 番目の段落を含む Range オブジェクトを定義します。

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

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

    次のコード例はアプリケーション レベルのアドインで使用できます。この例ではアクティブ ドキュメントを使用します。

    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. Range オブジェクトの Find プロパティを使用して、既存の書式オプションを消去した後、find me という文字列を検索します。

    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. 検索結果をメッセージ ボックスに表示し、Range を選択して表示します。

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

    検索が失敗した場合は 2 番目の段落が選択され、成功した場合は検索条件が表示されます。

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

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

次の例は、アプリケーション レベルのアドインの完全なコードを示しています。この例を使用するには、プロジェクトの ThisAddIn クラスからコードを実行します。

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

参照

処理手順

方法 : ドキュメント内のテキストを検索および置換する

方法 : Word の検索オプションを設定する

方法 : 文書で見つかった項目をループする

方法 : 文書に複数の範囲を定義して選択する

方法 : 検索後に選択範囲を復元する

概念

Office ソリューションの省略可能なパラメータについて