凯特(Kate)只需要为文档中的页眉和页脚生成一个字数统计表,而她却不知该如何做。

没有自动方法可以执行此操作,但是您可以开发一个可以计算出计数的宏。通过VBA,您可以轻松地逐步浏览文档各部分中的标题,然后可以确定每个标题中有多少个单词。一种方法是使用如下所示的宏:

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的字数。这就是宏实际上检查标题中的每个单词的原因,并且如果它只是一个回车符或换行符,那么它就不包含在计数中。

还要注意的另一项是,如果标题中有标点符号,则每个标点符号都将算作一个单词。例如,如果您具有标题“保留所有权利”,Word会将其视为三个单词。如果标题为“保留所有权利”。 (带有尾随的句号),则Word认为这是四个单词。结果是,如果您认为标头中可能包含标点符号,则可能需要调整宏代码以不计算标点符号。

该宏仅返回文档标题中的字数。相反,如果您想要页眉和页脚的字数统计,则可以通过以下方式调整宏:

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_是您进行经济有效的Microsoft Word培训的来源。

(Microsoft Word是世界上最流行的文字处理软件。)本技巧(10285)适用于Microsoft Word 2007、2010和2013。