【Word VBA】文書中の英単語や全角文字の数を常に表示するWordマクロ

文書作成や翻訳で、自分の作業量を正確に把握したいことがあります。

Wordのステータスバーには、デフォルトで以下のような情報が表示されています。でも、この情報ってあんまり役に立たないと思いませんか?

19単語って何でしょうか(笑)。

これは、[Ctrl]+[Shift]+[G]のショートカットキーで表示される[文字カウント]ダイアログで表示される以下の項目に対応しています。

でも、実際にはこの単語数ってあまり判断基準になりません。私たちが欲しいのはどちらかというと、文書中の英単語数だったり日本語の文字数だったりします。翻訳をしているとこの2つの情報はけっこう重要です。

翻訳者としては、Wordで翻訳をしているとき、とくに上書き翻訳をしている場合には、翻訳の進捗状況を見るのに役立ちます。

そこで、私たちが必要とする、以下の情報をステータスバーに表示するマクロを作ってみました。

ちなみに、デフォルトで表示される19単語とは、この「半角英数の単語数」と「全角文字+半角カタカナの数」の合計値です。

このマクロでできること

マクロを実行すると、作業中の(現在カーソルが置かれた)文書中の「半角英数の単語数」と「全角文字+半角カタカナの数」を5秒おきに表示します。

以下のような表示になります。

大きな書類で仕事をするとマクロの実行時に一瞬動きが止まるかもしれません。表示間隔を30秒くらいにしてもいいかもしれません。

私もこれを使ってまだ仕事をそれほどしていないので、まだ不具合を確認しておりません。とりあえず使ってみて感想をください(笑)。

マクロの解説

文書中の英単語や全角文字を計算するマクロはかつて紹介した以下の記事を参考にしてください。

【Word VBA】表内の文字数を計算するWordマクロ(その2)

ステータスバーに情報を表示する場合には、StatusBar プロパティを使います(9行目)。

5秒ごとに表示をするために、OnTime メソッドを使います(10行目)。マクロを実行したままで文書を扱うと操作が重くなってしまい実用的ではないので、5秒ごとにマクロを実行し続けるという方法にしています。

マクロを終了するには、[Ctrl]+[Pause/Break]を押します。Wordを終了すれば、もちろんマクロを終了できます。

マクロ


Sub 自動で文字カウントするWordマクロ()

 With ActiveDocument.Range
  Dim cWord As Long: cWord = .ComputeStatistics(wdStatisticWords)
  Dim cZenChar As Long: cZenChar = .ComputeStatistics(wdStatisticFarEastCharacters)
  Dim cHanWord As Long: cHanWord = cWord - cZenChar
 End With
   
 Application.StatusBar = "英単語数:" & cHanWord & "語 全角文字数:" & cZenChar & "文字"
 Application.OnTime When:=Now + TimeValue("00:00:05"), Name:="自動で文字カウントするWordマクロ"
 
End Sub

関連記事

【Word VBA】表内の文字数を計算するWordマクロ

【Word VBA】表内の文字数を計算するWordマクロ(その2)

トップへ戻る