vba_统计Word文档字数、页数等信息方法探讨
- 格式:docx
- 大小:221.30 KB
- 文档页数:12
VBA 统计Word 字数、页数方法探讨我们在日常工作若需要文档的字数和页数,或是VBA编程处理文档时需要用的文档的字数或页数作参数。
那么如何获得一个文档的字数和页数,VBA有多种方法获得文档的字数和页数,那么具体如何获得字数和页数?获的数字到底代表了什么意义?与我们平时理解除的文档字数和页数有什么异同?相信你看完本文后,应该就明白了。
1. 使用Document.BuiltInDocumentProperties方法统计字数1.1第一种方法的实例1及结论我们先来看一个例子:如要统计一篇活动word文档的字数,可以在VBE代码窗口中输入以下代码:Public Sub getword()'显示当前文档的字数MsgBox "当前文档的的总字数为:" & ActiveDocument.BuiltInDocument Properties(wdPropertyWords)End Sub1、在代码窗口中输入上述代码,如图1-1所示。
运行按钮图1-12、点运行按钮,运行结果如下图1-2所示。
3、对此统计的数字我进行了多次测试,特作如下说明:(1)这里统计的字数是指汉字的字数+标点符号+加英文的单词数,英文的单词不区分大小写和正角性,只要有空格分开的就算两个字,如:Seeto、see,to、s ee.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 Sub1、在代码窗口中输入上述代码,如图1-3所示。
图1-32、点运行按钮,运行结果如下图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. 使用puteStatistics方法统计字数和页数2.1第二种方法的实例1及结论同样我们也可以采用ActiveDocument的ComputeStatistics方法来获得文档的字数,包括尾注和脚注的字数。
1、在代码窗口中输入下述代码,如图2-1所示。
Public Sub getwords2()'显示当前文档的字数,包括尾注和脚注的字数Dim WORDnumber As IntegerWORDnumber = puteStatistics(Statistic:=wdStatisti cWords, IncludeFootnotesAndEndnotes:=True)MsgBox "当前文档的总字数(含尾注和脚注)为:" & WORDnumberEnd Sub图2-12、点运行按钮,程序运行结果如下图2-2所示。
图2-2程序运行结果3、用这种方法统计字数结果的含义与第一种方法相同2.2 第二种方法的实例2及结论同样我们也可以采用ActiveDocument 的ComputeStatistics 方法来获得文档的页数。
1、在代码窗口中输入下述代码,如图2-3所示。
Public Sub getpagenuber2()'显示当前文档的页数Dim WORDnumber As IntegerPageNumber = puteStatistics(wdStatisticPages) MsgBox "当前文档的总页数为:" & PageNumberEnd Sub运行按钮图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所示。
ublic Sub getwords3()'显示指定文档的字数Dim wordCount As IntegerDim myRange As RangeSet myRange = Documents("测试文档.docx").RangewordCount = puteStatistics(Statistic:=wdStatisticWords) MsgBox "这是“测试文档”的总字数: " & wordCount & "个字。
"End Sub图3-12、点运行按钮,程序运行结果如下图3-2所示。
图3-2程序运行结果3、由于在这种方法中,我们使用了Range 对象,大大提高的灵活性。
Range对运行按钮象是百变袋子,什么都能装。
大到整个文档,小至一个字。
用了Range 对象,我们可以对整体个文档、单个节、单个段落进行字数的统计。
3.2 第三种方法的实例2及结论同样我们也可以采用Range 的ComputeStatistics 方法来获得文档的页数。
1、在代码窗口中输入下述代码,如图3-3所示。
Public Sub getpagenumber3()'显示指定文档的页数Dim PageNumber As IntegerDim myRange As RangeSet myRange = Documents("测试文档.docx").RangePageNumber = puteStatistics(Statistic:=wdStatisticPages) MsgBox "“测试文档.docx ”总共有: " & PageNumber & "页。
"End Sub图3-32、点运行按钮,程序运行结果如下图3-4所示。
图3-4程序运行结果运行按钮3、用这种方法统计页数结果与第一种方法相同3.3 第三种方法的实例3及结论我们可以采用Range 的ComputeStatistics 方法来获得文档第二段的字数。
1、在代码窗口中输入下述代码,如图3-5所示。
Public Sub getwords4()'显示指定文档指定段落的字数Dim wordCount As IntegerDim myRange As RangeSet myRange = Documents("测试文档.docx").Paragraphs(2).RangewordCount = puteStatistics(Statistic:=wdStatisticWords) MsgBox "这是“测试文档”第二段的总字数: " & wordCount & "个字。
" End Sub图3-52、点运行按钮,程序运行结果如下图3-6所示。
图3-6程序运行结果运行按钮3、若是要统计活动文档的字数也可以写成puteStatistics(wdStatisticWords)4. 利用ActiveWindow.Panes(1).Pages.Count 属性来获得页数4.1 第四种方法的实例1及结论我们可以采用ActiveWindow.Panes(1).Pages.Count 属性来获得文档的页数。
1、在代码窗口中输入下述代码,如图4-1所示。
Public Sub getpagenumber4()'打开当前目录下面的测试文档word 文档并获取文档的总面数Documents.Open FileName:=ActiveDocument.Path & "\测试文档.docx" '在当前目录下打开“测试文档.docx ”'统计页数MsgBox "测试文档总共:" & Documents("测试文档.docx").ActiveWindow.Panes(1).Pages.Count & "页。