vba统计Word文档字数页数等信息方法探讨.docx
《vba统计Word文档字数页数等信息方法探讨.docx》由会员分享,可在线阅读,更多相关《vba统计Word文档字数页数等信息方法探讨.docx(12页珍藏版)》请在冰豆网上搜索。
![vba统计Word文档字数页数等信息方法探讨.docx](https://file1.bdocx.com/fileroot1/2022-10/11/8660b7c7-6b6a-4cb9-a552-ef9a9eed24f3/8660b7c7-6b6a-4cb9-a552-ef9a9eed24f31.gif)
vba统计Word文档字数页数等信息方法探讨
VBA统计Word字数、页数方法探讨
我们在日常工作若需要文档的字数和页数,或是VBA编程处理文档时需要用的文档的字数或页数作参数。
那么如何获得一个文档的字数和页数,VBA有多种方法获得文档的字数和页数,那么具体如何获得字数和页数?
获的数字到底代表了什么意义?
与我们平时理解除的文档字数和页数有什么异同?
相信你看完本文后,应该就明白了。
1.使用Document.BuiltInDocumentProperties方法统计字数
1.1第一种方法的实例1及结论
我们先来看一个例子:
如要统计一篇活动word文档的字数,可以在VBE代码窗口中输入以下代码:
PublicSubgetword()
'显示当前文档的字数
MsgBox"当前文档的的总字数为:
"&ActiveDocument.BuiltInDocumentProperties(wdPropertyWords)
EndSub
1、在代码窗口中输入上述代码,如图1-1所示。
图1-1
2、点运行按钮,运行结果如下图1-2所示。
3、对此统计的数字我进行了多次测试,特作如下说明:
(1)这里统计的字数是指汉字的字数+标点符号+加英文的单词数,英文的单词不区分大小写和正角性,只要有空格分开的就算两个字,如:
Seeto、see,to、see.to、wdStatisticCharacters都是算一个字,但Seeto就是两个字,而see,to则算3个字。
图1-2程序运行结果
(2)空格再多都不算作字,如“黄山村夫”和“黄山村夫”都是算4个字。
(3)中文的引号只有配对后才能算一个字,否则不算。
(4)西文的标点符号与西文相连时不算字,但与中文相连时就算一个字,如:
A,或a.都是算一个字,而“我,”或“我.”都是算2个字。
1.2第一种方法的实例2及结论
我们来看实例2,利用VBA的ActiveDocument对象的BuiltInDocumentProperties,统计一篇活动word文档的总页数,可以在VBE代码窗口中输入以下代码:
PublicSubgetpagenumbers()
'显示当前文档的页数
MsgBox"当前文档的总页数为:
"&ActiveDocument.BuiltInDocumentProperties(wdPropertyPages)
EndSub
1、在代码窗口中输入上述代码,如图1-3所示。
图1-3
2、点运行按钮,运行结果如下图1-4所示。
图1-4程序运行结果
3、从上面的结果可以看出,统计的结果与我们平时的理解是一致的。
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所示。
PublicSubgetwords2()
'显示当前文档的字数,包括尾注和脚注的字数
DimWORDnumberAsInteger
WORDnumber=ActiveDocument.ComputeStatistics(Statistic:
=wdStatisticWords,IncludeFootnotesAndEndnotes:
=True)
MsgBox"当前文档的总字数(含尾注和脚注)为:
"&WORDnumber
EndSub
图2-1
2、点运行按钮,程序运行结果如下图2-2所示。
图2-2程序运行结果
3、用这种方法统计字数结果的含义与第一种方法相同
2.2第二种方法的实例2及结论
同样我们也可以采用ActiveDocument的ComputeStatistics方法来获得文档的页数。
1、在代码窗口中输入下述代码,如图2-3所示。
PublicSubgetpagenuber2()
'显示当前文档的页数
DimWORDnumberAsInteger
PageNumber=ActiveDocument.ComputeStatistics(wdStatisticPages)
MsgBox"当前文档的总页数为:
"&PageNumber
EndSub
图2-3
2、点运行按钮,程序运行结果如下图2-4所示。
图2-4程序运行结果
3、用这种方法统计页数结果与第一种方法相同
2.3扩展知识
用上面的方法还可以获得下面这些参数:
wdStatisticCharacters字符数。
wdStatisticCharactersWithSpaces字符数(计空格)。
wdStatisticFarEastCharacters中文字符和朝鲜文。
wdStatisticLines行数。
wdStatisticPages页数。
wdStatisticParagraphs段数。
wdStatisticWords字数。
使用如下:
3.应用于Range对象的ComputeStatistics方法来获得文档的字数和页数。
3.1第三种方法的实例1及结论
我们还可以用Range对象的ComputeStatistics方法来获得文档的总字数。
1、在代码窗口中输入下述代码,如图3-1所示。
ublicSubgetwords3()
'显示指定文档的字数
DimwordCountAsInteger
DimmyRangeAsRange
SetmyRange=Documents("测试文档.docx").Range
wordCount=myRange.ComputeStatistics(Statistic:
=wdStatisticWords)
MsgBox"这是“测试文档”的总字数:
"&wordCount&"个字。
"
EndSub
图3-1
2、点运行按钮,程序运行结果如下图3-2所示。
图3-2程序运行结果
3、由于在这种方法中,我们使用了Range对象,大大提高的灵活性。
Range对象是百变袋子,什么都能装。
大到整个文档,小至一个字。
用了Range对象,我们可以对整体个文档、单个节、单个段落进行字数的统计。
3.2第三种方法的实例2及结论
同样我们也可以采用Range的ComputeStatistics方法来获得文档的页数。
1、在代码窗口中输入下述代码,如图3-3所示。
PublicSubgetpagenumber3()
'显示指定文档的页数
DimPageNumberAsInteger
DimmyRangeAsRange
SetmyRange=Documents("测试文档.docx").Range
PageNumber=myRange.ComputeStatistics(Statistic:
=wdStatisticPages)
MsgBox"“测试文档.docx”总共有:
"&PageNumber&"页。
"
EndSub
图3-3
2、点运行按钮,程序运行结果如下图3-4所示。
图3-4程序运行结果
3、用这种方法统计页数结果与第一种方法相同
3.3第三种方法的实例3及结论
我们可以采用Range的ComputeStatistics方法来获得文档第二段的字数。
1、在代码窗口中输入下述代码,如图3-5所示。
PublicSubgetwords4()
'显示指定文档指定段落的字数
DimwordCountAsInteger
DimmyRangeAsRange
SetmyRange=Documents("测试文档.docx").Paragraphs
(2).Range
wordCount=myRange.ComputeStatistics(Statistic:
=wdStatisticWords)
MsgBox"这是“测试文档”第二段的总字数:
"&wordCount&"个字。
"
EndSub
运行按钮
图3-5
2、点运行按钮,程序运行结果如下图3-6所示。
图3-6程序运行结果
3、若是要统计活动文档的字数也可以写成
ActiveDocument.Range.ComputeStatistics(wdStatisticWords)
4.利用ActiveWindow.Panes
(1).Pages.Count属性来获得页数
4.1第四种方法的实例1及结论
我们可以采用ActiveWindow.Panes
(1).Pages.Count属性来获得文档的页数。
1、在代码窗口中输入下述代码,如图4-1所示。
PublicSubgetpagenumber4()
'打开当前目录下面的测试文档word文档并获取文档的总面数
Documents.OpenFileName:
=ActiveDocument.Path&"\测试文档.docx"'在当前目录下打开“测试文档.docx”
'统计页数
MsgBox"测试文档总共:
"&Documents("测试文档.docx").ActiveWindow.Panes
(1).Pages.Count&"页。
"
Documents("测试文档.docx").CloseFalse'关闭指定文档且不保存
EndSub
运行按钮
图4-1
2、点运行按钮,程序运行结果如下图4-2所示。
图4-2程序运行结果
4.2直接使用Count属