ケイトは、ドキュメント内のヘッダーとフッターのみの単語数を生成する必要があり、その方法について途方に暮れています。

それを自動的に行う方法はありませんが、カウントを計算するマクロを開発することはできます。 VBAを使用すると、ドキュメントの各セクションのヘッダーを簡単にステップスルーでき、各ヘッダーに含まれる単語の数を確認できます。 1つのアプローチは、次のようなマクロを使用することです。

Sub CntHeaderWords()

Dim s As Section     Dim h As HeaderFooter     Dim sRaw As String     Dim Cnt As Long     Dim J As Integer

Cnt = 0     For Each s In ActiveDocument.Sections         For Each h In s.Headers             For J = 1 To h.Range.Words.Count                 sRaw = h.Range.Words(J)

sRaw = Trim(sRaw)

If sRaw = vbCrLf Then sRaw = ""

If sRaw = vbCr Then sRaw = ""

If sRaw = vbLf Then sRaw = ""

If Len(sRaw) > 0 Then Cnt = Cnt + 1             Next J         Next h     Next s

MsgBox Cnt & " words in headers"

End Sub

このマクロを実行すると、ドキュメントの各セクション、次にそのセクションの各ヘッダーが順番に表示されます。単語数はヘッダーごとに決定され、Cnt変数に追加されます。マクロが完了すると、ドキュメントのヘッダーの単語数が表示されます。

このマクロについて注意すべき興味深い点がいくつかあります。

まず、各ヘッダーのWordsコレクションのCountプロパティを決定できるため、これらすべてのカウントを単純に合計して、全体的な単語数を決定できると考えるかもしれません。問題は、セクションのヘッダーがない場合でも、Wordが「暗黙の」ヘッダーに対して単語数1を返すことです。そのため、マクロは実際にヘッダー内の各単語を調べ、それがキャリッジリターンまたはラインフィードにすぎない場合は、カウントに含まれません。

注意すべきもう1つの項目は、ヘッダーに句読点がある場合、各句読点は単語としてカウントされることです。たとえば、「All rights reserved」というヘッダーがある場合、Wordはそれを3語と見なします。ヘッダーが「Allrightsreserved」の場合。 (末尾にピリオドが付いている)場合、Wordはそれを4つの単語と見なします。結論として、ヘッダーに句読点があると思われる場合は、句読点をカウントしないようにマクロコードを調整することをお勧めします。

このマクロは、ドキュメント内のヘッダーのワードカウントのみを返します。代わりに、ヘッダーとフッターの両方の単語数が必要な場合は、次のようにマクロを調整できます。

Sub CntHFWords()

Dim s As Section     Dim h As HeaderFooter     Dim f As HeaderFooter     Dim sRaw As String     Dim HdCnt As Long     Dim FtCnt As Long     Dim J As Integer

HdCnt = 0     FtCnt = 0     For Each s In ActiveDocument.Sections         For Each h In s.Headers             For J = 1 To h.Range.Words.Count                 sRaw = h.Range.Words(J)

sRaw = Trim(sRaw)

If sRaw = vbCrLf Then sRaw = ""

If sRaw = vbCr Then sRaw = ""

If sRaw = vbLf Then sRaw = ""

If Len(sRaw) > 0 Then HdCnt = HdCnt + 1             Next J         Next h

For Each f In s.Footers             For J = 1 To f.Range.Words.Count                 sRaw = f.Range.Words(J)

sRaw = Trim(sRaw)

If sRaw = vbCrLf Then sRaw = ""

If sRaw = vbCr Then sRaw = ""

If sRaw = vbLf Then sRaw = ""

If Len(sRaw) > 0 Then FtCnt = FtCnt + 1             Next J         Next f     Next s

sRaw = "Header words: " & HdCnt & vbCrLf     sRaw = sRaw & "Footer words: " & FtCnt & vbCrLf     sRaw = sRaw & "Total words: " & HdCnt + FtCnt     MsgBox sRaw End Sub

このバージョンのマクロは、各ヘッダーに適用するのとまったく同じカウント手法を各フッターに適用し、マクロの最後に個々のカウントと合計カウントを表示します。

注:

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

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

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