方法: 文書で見つかった項目をプログラムによってループする
Find クラスの Found プロパティは、検索対象の項目が見つかった場合に true を返します。Execute メソッドを使用して、見つかったすべてのインスタンスを Range 内でループできます。
対象: このトピックの情報は、Word 2013 と Word 2010 のドキュメント レベルのプロジェクトおよびアプリケーション レベルのプロジェクトに適用されます。詳細については、「Office アプリケーションおよびプロジェクト タイプ別の使用可能な機能」を参照してください。
見つかった項目をループするには
Range オブジェクトを宣言します。
次のコード例はドキュメント レベルのカスタマイズで使用できます。
Dim rng As Word.Range = Me.Content
Word.Range rng = this.Content;
次のコード例はアプリケーション レベルのアドインで使用できます。この例ではアクティブ ドキュメントを使用します。
Dim rng As Word.Range = Me.Application.ActiveDocument.Content
Word.Document document = this.Application.ActiveDocument; Word.Range rng = document.Content;
ループ内で Found プロパティを使用して、文書内に出現する特定の文字列をすべて検索し、見つかった文字列ごとに整数値を 1 ずつインクリメントします。
rng.Find.ClearFormatting() rng.Find.Forward = True rng.Find.Text = "find me" rng.Find.Execute() Do While rng.Find.Found = True intFound += 1 rng.Find.Execute() Loop
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())
MessageBox.Show("Strings found: " + intFound.ToString());
このメソッドの完全なコードは次のようになります。
ドキュメント レベルのカスタマイズの例
ドキュメント レベルのカスタマイズの項目をループ処理するには
次の例は、ドキュメント レベルのカスタマイズの完全なコードを示しています。このコードを使用するには、プロジェクトの ThisDocument クラスから実行します。
Private Sub FindLoop() Dim intFound As Integer = 0 Dim rng As Word.Range = Me.Content rng.Find.ClearFormatting() rng.Find.Forward = True rng.Find.Text = "find me" rng.Find.Execute() Do While rng.Find.Found = True intFound += 1 rng.Find.Execute() Loop MessageBox.Show("Strings found: " & intFound.ToString()) End Sub
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()); }
アプリケーション レベルのアドインの例
アプリケーション レベルのアドインの項目をループ処理するには
次の例は、アプリケーション レベルのアドインの完全なコードを示しています。このコードを使用するには、プロジェクトの ThisAddIn クラスから実行します。
Private Sub FindLoop() Dim intFound As Integer = 0 Dim rng As Word.Range = Me.Application.ActiveDocument.Content rng.Find.ClearFormatting() rng.Find.Forward = True rng.Find.Text = "find me" rng.Find.Execute() Do While rng.Find.Found = True intFound += 1 rng.Find.Execute() Loop MessageBox.Show("Strings found: " & intFound.ToString()) End Sub
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()); }
参照
処理手順
方法: プログラムによって文書内のテキストを検索および置換する
方法: プログラムによって Word の検索オプションを設定する
方法: プログラムによって文書に複数の範囲を定義して選択する