VBA 统计Word 字数、页数方法探讨
我们在日常工作若需要文档的字数和页数,或是VBA编程处理文档时需要用的文档的字数或页数作参数。那么如何获得一个文档的字数和页数,VBA有多种方法获得文档的字数和页数,那么具体如何获得字数和页数?获的数字到底代表了什么意义?与我们平时理解除的文档字数和页数有什么异同?相信你看完本文后,应该就明白了。
1. 使用Document.BuiltInDocumentProperties方法统计字数1.1第一种方法的实例1及结论
我们先来看一个例子:如要统计一篇活动word文档的字数,可以在VBE代码窗口中输入以下代码:
Public Sub getword()
'显示当前文档的字数
MsgBox "当前文档的的总字数为:" & ActiveDocument.BuiltInDocument Properties(wdPropertyWords)
End Sub
1、在代码窗口中输入上述代码,如图1-1所示。
运行按钮
图1-1
2、点运行按钮,运行结果如下图1-2所示。
3、对此统计的数字我进行了多次测试,特作如下说明:
(1)这里统计的字数是指汉字的字数+标点符号+加英文的单词数,英文的单词不区分大小写和正角性,只要有空格分开的就算两个字,如:Seeto、see,to、、wdStatisticCharacters都是算一个字,但See to就是两个字,而see,to则算3个字。
图1-2程序运行结果
(2)空格再多都不算作字,如“黄山村夫”和“黄  山  村  夫”都是算4个字。
(3)中文的引号只有配对后才能算一个字,否则不算。
(4)西文的标点符号与西文相连时不算字,但与中文相连时就算一个字,如:A,或a.都是算一个字,而“我,”或“我.”都是算2个字。
1.2 第一种方法的实例2及结论
我们来看实例2,利用VBA 的ActiveDocument 对象的BuiltInDocumentPrope rties ,统计一篇活动word 文档的总页数,可以在VBE 代码窗口中输入以下代码:
Public Sub getpagenumbers()
'显示当前文档的页数
MsgBox "当前文档的总页数为:" & ActiveDocument.BuiltInDocumentPro perties(wdPropertyPages)
End Sub
1、在代码窗口中输入上述代码,如图1-3所示。
图1-3
2、点运行按钮,运行结果如下图1-4所示。
运行按钮
图1-4程序运行结果
3、从上面的结果可以看出,统计的结果与我们平时的理解是一致的。
vba编程技巧
1.3 扩展知识
这种方法适用于Document对象和Template 对象。返回一个DocumentProperties 集合,该集合代表了指定文档的所有内置的文档属性。
这两个对象可使用的参数有:
wdPropertyAppName 应用程序名。
wdPropertyAuthor 作者。
wdPropertyBytes 字节数。
wdPropertyCategory 类别。
wdPropertyCharacters 字符数。
wdPropertyCharsWSpaces 字符数(计空格)。
wdPropertyComments 批注。
wdPropertyCompany 公司。
wdPropertyKeywords 关键词。
wdPropertyLastAuthor最近一个作者。
wdPropertyLines 行数。
wdPropertyManager 经理。
wdPropertyNotes 注释。
wdPropertyPages 页数。
wdPropertyParas 段数。
wdPropertyRevision 修订次数。
wdPropertySecurity 安全性。
wdPropertySubject 主题。
wdPropertyTemplate 模板。
wdPropertyTimeCreated 创建时间。
wdPropertyTimeLastPrinted 上次打印时间。
wdPropertyTimeLastSaved 上次保存时间。
wdPropertyTitle 标题。
wdPropertyVBATotalEdit 编辑时间总计。
wdPropertyWords 字数。
2. 使用ActiveDocument.ComputeStatistics方法统计字数和页数
2.1第二种方法的实例1及结论
同样我们也可以采用ActiveDocument的ComputeStatistics方法来获得文档的字数,包括尾注和脚注的字数。
1、在代码窗口中输入下述代码,如图2-1所示。
Public Sub getwords2()
'显示当前文档的字数,包括尾注和脚注的字数
Dim WORDnumber As Integer
WORDnumber = ActiveDocument.ComputeStatistics(Statistic:=wdStatisti cWords, IncludeFootnotesAndEndnotes:=True)
MsgBox "当前文档的总字数(含尾注和脚注)为:" & WORDnumber
End Sub
图2-1
2、点运行按钮,程序运行结果如下图2-2所示。
图2-2程序运行结果
3、用这种方法统计字数结果的含义与第一种方法相同
2.2 第二种方法的实例2及结论
同样我们也可以采用ActiveDocument 的ComputeStatistics 方法来获得文档的页数。
1、在代码窗口中输入下述代码,如图2-3所示。
Public Sub getpagenuber2()
'显示当前文档的页数
Dim WORDnumber As Integer
PageNumber = ActiveDocument.ComputeStatistics(wdStatisticPages)  MsgBox "当前文档的总页数为:" & PageNumber
End Sub
运行按钮