さまざまなテキストボックスにテキストが含まれているドキュメントがある場合、単語カウントを実行すると、Wordは返される単語カウントのテキストボックスに単語を含めないことを理解する必要があります。テキストボックス内の単語数のみを知りたい場合は、これを回避する方法があります:

単語カウント機能を開始する前に、単語をカウントするテキストボックスを選択するだけです。次に、Wordは、ドキュメントの残りの部分を無視して、テキストボックス内の単語のみを忠実にカウントします。

ただし、このカウント前選択手法が機能しない場合があります。単語を含む複数のテキストボックスがあり、それらのテキストボックスがグループ化されている場合、グループを選択すると、ワードカウント機能はそれらを「カウント可能」として認識しません。つまり、グループを構成するテキストボックスの文字数をカウントするには、最初にグループのグループ化を解除してから、各テキストボックスをカウントする必要があります。

明らかに、これは何度も何度も行うのが面倒になる可能性があります。これを回避する1つの方法は、これらと同じ手順を実行するマクロを使用することです。

次のマクロTextBoxCountは、ドキュメント内のすべての図形をステップスルーします。それらがグループ化されている場合、それらは自動的にグループ化解除されます。次に、各テキストボックスで単語カウントを実行し、テキストボックス内の単語と文字の数(まとめて)と、テキストボックスを含むドキュメント全体の単語と文字の数を示すダイアログボックスを返します。

Sub TextBoxCount()

Dim lngTBWords As Long     Dim lngTBChars As Long     Dim lngDocWords As Long     Dim lngDocChars As Long     Dim shpTemp As Shape     Dim wcTemp As Dialog     Dim bDone As Boolean

Application.ScreenUpdating = False

Do         bDone = True         For Each shpTemp In ActiveDocument.Shapes             If shpTemp.Type = msoGroup Then                 shpTemp.Ungroup                 bDone = False             End If         Next shpTemp     Loop Until bDone

'Get count in main document     Selection.HomeKey Unit:=wdStory     Set wcTemp = Dialogs(wdDialogToolsWordCount)

wcTemp.Update     wcTemp.Execute     lngDocWords = wcTemp.Words     lngDocChars = wcTemp.Characters

'Step through shapes and add counts     lngTBWords = 0     lngTBChars = 0     For Each shpTemp In ActiveDocument.Shapes         shpTemp.Select         wcTemp.Execute         lngTBWords = lngTBWords + wcTemp.Words         lngTBChars = lngTBChars + wcTemp.Characters     Next shpTemp     lngDocWords = lngDocWords + lngTBWords     lngDocChars = lngDocChars + lngTBChars

Application.ScreenUpdating = True     MsgBox Str(ActiveDocument.Shapes.Count) _       & " text boxes found with" & vbCr _       & Str(lngTBWords) & " word(s) and" & vbCr _       & Str(lngTBChars) & " characters" & vbCr & vbCr _       & " In the total document there are" & vbCr _       & Str(lngDocWords) & " word(s) and" & vbCr _       & Str(lngDocChars) & " characters"

End Sub

このマクロは、ドキュメントで以前に行われたグループ化のグループ化を解除することに注意してください。このため、ドキュメントを保存した後でマクロを実行し、カウントを取得した後でドキュメントを破棄(ディスクから再ロード)することをお勧めします。

注:

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

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

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