【Word VBA】選択したキーワードの個数を数える(その2)

2016年3月11日

先日、翻訳者仲間とお茶をしていたときに、私が以前紹介した記事「【Wordマクロ】選択した文字列の出現頻度を数える 」のマクロを使っているとうれしい話を聞きました。

3年以上前のマクロです。見直してみたら、別の書き方ができたので紹介します。

▼このマクロでできること

選択されている文字が、現在開かれている文書の本文中に何度記載されているのかを数えて、ステータスバー(画面の下にある情報の表示領域)に示します。以前のマクロと同じです。

▼マクロの解説

myKWに、選択されている文字列が保持されています。
myTextに、現在フォーカスがある文書の「メイン文書」部分(本文部分)の文字列を保持しています。

VBAで文字列を処理する場合、柔軟な検索や置換をするためにVBScriptの正規表現機能を使うと便利なことがあります。

正規表現については、以下の記事をご覧ください。

正規表現によるマッチング(Office TANAKA)

目的に応じて様々な検索をしてみてください。

今回は、myText内のmyKWの数を算出してみました。

▼マクロ

Sub 選択したキーワードの個数を数える2()

Dim myRE As Object
Dim myMatch As Object
Dim myText As String
Dim myKW As String

'キーワードの取得
If Selection.Type = wdSelectionIP Then
Exit Sub
Else
Selection.MoveEndWhile Cset:=vbCr & Chr(32), _
Count:=wdBackward
myKW = Selection.Text
myText = ActiveDocument.Range.Text
End If

'正規表現のオブジェクトを設定
Set myRE = CreateObject("VBScript.RegExp")

'キーワードの数を数える
With myRE
.Pattern = myKW       '検索する文字列
.IgnoreCase = True     '大文字と小文字を区別しない
.Global = True       '文字列全体を検索
Set myMatch = .Execute(myText)
StatusBar = myKW & ":" & myMatch.Count & "個"
End With

Set myRE = Nothing
Set myMatch = Nothing

End Sub

▼関連記事

【Wordマクロ】選択した文字列の出現頻度を数える

正規表現によるマッチング(Office TANAKA)

-コード
-