Office Space : Microsoft Word ドキュメントの統計情報を取得する

Office Space

Office Space へようこそ。Office Space は、Microsoft® Office アプリケーションのスクリプト作成に関するヒントとテクニックを紹介する新しいコラムです。過去のヒントについては、Office Space アーカイブを参照してください。Microsoft Office でのスクリプト作成について質問がある場合は、scripter@microsoft.com (英語のみ) までお送りください。すべての質問に回答することはできないかもしれませんが、可能な限り対応いたします。

Microsoft Word ドキュメントの統計情報を取得する

Microsoft Word の機能の中で、有用性が高いにもかかわらず忘れられがちなものの 1 つに、ドキュメントの統計情報を生成する機能があります。このような情報を取得するには、[ファイル] メニューの [プロパティ] をクリックし、[詳細情報] タブをクリックします。

Microsoft Word

ご覧のとおり、ページ数、段落、行数、単語数、文字数などの情報が得られます。これ以上何か必要なものはありますか。

そうですね。1 つあるかもしれません。この情報をスクリプトによって取得する方法です。もちろん、その方法はあります。

その証拠として、ドキュメント C:\Scripts\Test.doc を開いて統計情報を返すスクリプトを次に示します。

Const wdStatisticCharacters = 3
Const wdStatisticCharactersWithSpaces = 5
Const wdStatisticFarEastCharacters = 6
Const wdStatisticLines = 1
Const wdStatisticPages = 2
Const wdStatisticParagraphs = 4
Const wdStatisticWords = 0

Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Open("C:\Scripts\Test.doc")

Wscript.Echo "Characters: " & _
    objDoc.ComputeStatistics(wdStatisticCharacters)
Wscript.Echo "Characters with spaces: " & _
    objDoc.ComputeStatistics(wdStatisticCharactersWithSpaces)
Wscript.Echo "Far East characters: " & _
    objDoc.ComputeStatistics(wdStatisticFarEastCharacters)
Wscript.Echo "Lines: " & objDoc.ComputeStatistics(wdStatisticLines)
Wscript.Echo "Pages: " & objDoc.ComputeStatistics(wdStatisticPages)
Wscript.Echo "Paragraphs: " & objDoc.ComputeStatistics(wdStatisticParagraphs)
Wscript.Echo "Words: " & objDoc.ComputeStatistics(wdStatisticWords)

objDoc.Saved = TRUE
objWord.Quit

一見すると複雑ですが、実際は至って簡単です。まず、いくつもの定数を定義しています。これらの定数は、Word が生成する各種の統計情報を表します。次に、Word.Application オブジェクトのインスタンスを作成し、Open メソッドを呼び出してファイル C:\Scripts\Test.doc を開きます。

(このスクリプトでは Visible プロパティを True に設定していない点に注意してください。これは画面に表示するものが何もないからです。このスクリプトでは、すべての操作を隠しウィンドウで実行します。)

ドキュメントを開いた状態で ComputeStatistics メソッドを反復的に呼び出し、そのつど別の定数を渡します。たとえば、次のコード行ではドキュメント内の単語数を取得し、画面に表示しています。

Wscript.Echo "Words: " & objDoc.ComputeStatistics(wdStatisticWords)

たったこれだけです。ただし、細かい点ですが、1 つ重要なことがあります。統計情報の計算はドキュメントへの変更と見なされるため、Word を終了するときに変更を保存するかどうかを確認するダイアログ ボックスが表示されます。この場合の "変更" は考慮する必要のないものであり、このようなダイアログ ボックスに煩わされたくはありません。そこで、その次の行から最終行までのコードでは、ドキュメントの Saved プロパティを True に設定しています。これによって、Word は変更が既に保存されていると判断します。その結果、Word を終了しても変更を保存するかどうかを確認するダイアログ ボックスは表示されません。