方法 : 文書内のテキストを検索する
更新 : 2007 年 11 月
対象 |
---|
このトピックの情報は、指定された Visual Studio Tools for Office プロジェクトおよび Microsoft Office のバージョンにのみ適用されます。 プロジェクトの種類
Microsoft Office のバージョン
詳細については、「アプリケーションおよびプロジェクトの種類別の使用可能な機能」を参照してください。 |
Find オブジェクトは、Selection オブジェクトと Range オブジェクトの両方のメンバであり、このいずれかを使用して Microsoft Office Word 文書内のテキストを検索できます。Replace コマンドは、Find コマンドの拡張機能です。文書内のテキスト置換の詳細については、「方法 : ドキュメント内のテキストを検索および置換する」を参照してください。
Selection オブジェクトの使用
Selection オブジェクトを使用してテキストを検索する場合、指定した検索条件は、現在選択されているテキストにしか適用されません。Selection がカーソル位置である場合は、文書が検索対象になります。検索条件に一致する項目が見つかると、見つかった項目が自動的に選択されます。
Find の条件は累積されることに注意してください。つまり、条件は前の検索条件に追加されます。検索の前に、ClearFormatting メソッドを使用して前の検索の書式設定をクリアします。
Selection オブジェクトを使用してテキストを検索するには
検索文字列を変数に代入します。
Dim findText As String = "find me"
object findText = "find me";
前の検索の書式設定をクリアします。
Application.Selection.Find.ClearFormatting()
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
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 オブジェクトを使用してテキストを検索するには
ドキュメントの 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;
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)) {
検索結果をメッセージ ボックスに表示し、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();
}