【Wordマクロ】選択したキーワードの個数を数える(その2) | みんなのワードマクロ

みんなのワードマクロ

ワードマクロで、文書作成とオフィス事務を効率化!!

先日、翻訳者仲間とお茶をしていたときに、私が以前紹介した記事「【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)