Wordは、ステータスバーに、書き込み中に役立つさまざまな情報を表示します。たとえば、ステータスバーには、ドキュメントのページ数と現在のページの行番号が表示されます。入力中にステータスバーにドキュメント内の単語数が表示されていると便利です。

ただし、このような機能はWordに組み込まれていません。ステータスバーは、バー全体を表示または非表示にしたり、メッセージを書き込んだりする以外に、マクロを介して再構成することはできません。ステータスバーにメッセージを継続的に書き込むマクロをコーディングすると、通常の情報が表示されないため、ステータスバーを使用するソリューションはおそらく受け入れられません。

ドキュメント内の単語数を継続的にチェックするマクロを作成し、その結果をタイトルバーやツールバーボタンなどのドキュメントの別の領域に表示することができます。お使いのシステムの種類によっては、このようなソリューションは受け入れられない場合があります。それがそうであるかどうかを確認するためにいくつかのテストを実施する必要があります。ドキュメントの単語数を計算するための内部コードは、特にドキュメントが大きくなるにつれて、かなり遅くなります。これは、単語数を絶えずチェックすると、システム全体の速度が低下する可能性があることを意味します。

この警告を念頭に置いて、次の一連のマクロを検討してください。

Sub AutoExec()

NumberOfWords End Sub

Sub NumberOfWords()

Dim lngWords As Long     Dim myRange As Range     With Word.Application         If .Windows.Count > 0 Then             Set myRange = ActiveDocument.Content             lngWords = myRange.ReadabilityStatistics(1).Value             .Caption = Format(lngWords, "##,##0") & " words - Microsoft Word"

Else             .Caption = "Microsoft Word"

End If         .OnTime Now + TimeValue(OnTm(lngWords)), "NumberOfWords"

End With End Sub

Private Function OnTm(ByVal lngWd As Long) As String     Select Case lngWd \ 1000         Case 0 To 10             OnTm = "00:00:01"

Case 11 To 20             OnTm = "00:00:05"

Case 21 To 30             OnTm = "00:00:10"

Case 31 To 40             OnTm = "00:00:15"

Case Else             OnTm = "00:00:20"

End Select End Function

このセットには3つのマクロが含まれており、それぞれが異なるタスクを実行します。 AutoExecという名前の最初のマクロは、Wordが起動するたびに自動的に実行されます。その唯一の目的は、次のマクロであるNumberOfWordsを初めて呼び出すことです。

NumberOfWordsマクロは、このセットの主力製品です。 Wordで開いているウィンドウがあるかどうかを確認します。その場合、Wordの内部コーディングを呼び出して、ドキュメント内の単語数を決定します。次に、出力をフォーマットして、ウィンドウのタイトルバーに表示します。

開いているウィンドウがない場合、マクロはタイトルバーに「MicrosoftWord」と表示するだけです。

NumberOfWordsが行う最後のことは、いつ再実行するかを自分自身に指示することです。これは、VBAのOnTime機能を使用して、再起動時間を次の20秒以内のいずれかに設定することによって行われます。ここで、3番目のマクロであるOnTmが機能します。現在のドキュメント内の単語数を調べて、NumberOfWordsマクロを実行する間隔を決定します。ドキュメントに含まれる単語が10,000以下の場合、マクロは毎秒実行されます。 11,000〜20,000語の場合、5秒ごとに実行されます。

このチェックの理由は、このヒントの前半で説明しました。単語数の計算とタイトルバー情報のフォーマットには時間がかかる場合があり(VBA用語では)、ドキュメントが大きい場合、これにより望ましくない顕著な遅延が発生する可能性があります。ドキュメントを更新する際に。必要に応じて、OnTm関数のコーディングを試して、使用するドキュメントの種類に最適な遅延の内訳を決定できます。

注:

このページ(または_WordTips_サイトの他のページ)で説明されているマクロの使用方法を知りたい場合は、役立つ情報を含む特別なページを用意しました。

_WordTips_は、費用効果の高いMicrosoftWordトレーニングのソースです。

(Microsoft Wordは、世界で最も人気のあるワードプロセッシングソフトウェアです。)このヒント(1608)は、Microsoft Word 97、2000、2002、および2003に適用されます。