「ワード vba 単語の数を返す」
「vba word 単語数 取得 selection.information」
といった検索で、このサイト・インストラクターのネタ帳へのアクセスがあることに気づきました。
単語数をカウントするWordマクロ・Word VBA(Visual Basic for Applications)のコードを探している方による検索です。
「vba word 単語数 取得 selection.information」
という検索をなさった方は、SelectionオブジェクトのInformationプロパティで、単語数も取得できると考えたのでしょう。
残念ながら単語数は、Selection.Informationプロパティでは取得できません。
アクティブ文書の単語数を取得するサンプルマクロ
以下のようなマクロにすると、アクティブな文書の単語数を取得することができます。
MsgBox ActiveDocument. _
Range.ComputeStatistics(wdStatisticWords)
単語数を取得するには、RangeオブジェクトのComputeStatisticsメソッドの
引数に定数・wdStatisticWordsを指定します。
どの範囲の単語数をカウントするのかは、Rangeオブジェクトで指定します。
上記のマクロの場合は、ActiveDocumentプロパティでアクティブなDocumentオブジェクトを取得して、
文書全体を表すRangeオブジェクトを、Rangeメソッドで取得しています。
実は、アクティブな文書の単語数をカウントするのならば、Rangeオブジェクトを使わない、
ActiveDocument.ComputeStatistics(wdStatisticWords)
というオブジェクト式でもOKなのですが、Rangeオブジェクトを使うほうが汎用性が高まりますので、ここでは
ActiveDocument.Range.ComputeStatistics(wdStatisticWords)
をご紹介しました。
選択範囲の単語数を取得するサンプルマクロ
「vba word 単語数 取得 selection.information」
という検索をなさった方は、選択範囲の単語数を取得したかったはずです。
選択範囲の単語数を取得するには、以下のようなマクロです。
MsgBox Selection _
.Range.ComputeStatistics(wdStatisticWords)
Selectionプロパティで選択範囲を表すSelectionオブジェクトを取得して、
Selectionオブジェクトの、RangeプロパティでRangeオブジェクトを取得して、
先の文書全体の単語数カウントと同様、ComputeStatisticsメソッドの引数に、定数・wdStatisticsWordsを指定しています。
アクティブページの単語数を取得するサンプルマクロ
アクティブなページの単語数を取得したいという要望もありそうです。
以下のようなマクロにすれば、アクティブなページの単語数を取得できます。
MsgBox ActiveDocument.Bookmarks("\Page") _
.Range.ComputeStatistics(wdStatisticWords)
Bookmarksプロパティの引数に「\Page」を指定するとアクティブなページが取得できるので、そのRangeオブジェクトのComputeStatisticsメソッドの引数に、定数・wdStatisticsWordsを指定しています。
いずれのマクロも、RangeオブジェクトのComputeStatisticsメソッドに、定数・wdStatisticWordsを指定する部分は同じで、どの範囲かを表すRangeオブジェクトを指定する部分が違うだけです。
Home » ワードマクロ・Word VBAの使い方 » Word.Rangeオブジェクト » Word VBAで単語数をカウントする-Range.ComputeStatistics(wdStatisticWords)