暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Word文档中的信息统计

VBA语言専攻 2022-01-12
151

分享成果,随喜正能量】人这一辈子,不管什么样子,都不要抱怨,责怪他人,心大了,事就小了;心宽了,烦就没了。

《VBA之Word应用》,是我推出第八套教程,教程是专门讲解VBA在Word中的应用,围绕“面向对象编程”讲解,首先让大家认识Word中VBA的对象,以及对象的属性、方法,然后通过实例让大家感受到Word VBA 的妙处。本套教程共三册十六章,今日内容是第五章“Word中的Range对象(上)”第7节:Word文档中范围的信息统计。

第七节 Range对象的方法(一)

大家好,我们继续Range对象的讲解,从这节开始,我们讲解Range对象的方法。对于对象而言,属性和方法是密不可分的,掌握属性后就要掌握方法了,当然,在实际应用中,两者也是通用的,实现一个目的也往往有多种实现的途经。

1  Range.ComputeStatistics 方法

这个方法返回一个Long , 该值代表基于指定范围内容的统计信息。

语法:expression.ComputeStatistics(Statistic)

其中expression 是必需的,是一个代表 Range 对象的变量。

参数:Statistic   必需   WdStatistic   要计算的统计值的类型。


WdStatistic是指要从选定内容或项目返回的统计信息。

1)wdStatisticCharacters   3  字符数。

2)wdStatisticCharactersWithSpaces   5   包括空格在内的字符数。

3)wdStatisticFarEastCharacters   6   亚洲语言字符数。

4)wdStatisticLines   1   行数。

5)wdStatisticPages   2   页数。

6)wdStatisticParagraphs   4   段落数。

7)wdStatisticWords   0   单词数。


l由于您选择或安装的语言支持不同(例如美国英语),上述部分常量可能无法使用。


2  Range.Delete 方法

此方法删除指定数量的字符或单词。

语法:expression.Delete(Unit, Count)

其中expression 是必需的,是一个代表 Range 对象的变量。

参数:

1) Unit   可选   Variant   要删除范围的单位。可以是WdUnits常量之一。

2) Count   可选   Variant   要删除的单位数。要删除该区域后的单位,请折叠该区域并使用一个正值。要删除该区域前的单位,请折叠该区域并使用一个负值。


l此方法返回一个Long值,指示删除的项目数,如果删除不成功,则返回0(零)。


WdUnits 的枚举值:

wdCell     12   单元格

wdCharacter  1   字符.

wdCharacterFormatting   13   字符格式

wdColumn      9  

wdItem     16   所选项

wdLine      5   一个线段

wdParagraph  4   段落

wdParagraphFormatting   14   段落格式

wdRow      10   行

wdScreen   7   屏幕尺寸

wdSection   8   一节

wdSentence   3   句子

wdStory     6   部分

wdTable     15   一个表格

wdWindow     11   窗口

wdWord      2  

3  Range.EndOf 方法

该方法将区域的结束字符位置移动或扩展到最近的一个指定文本单位末尾。

语法:expression. EndOf(Unit,Extend)

其中expression 是必需的,是一个代表 Range 对象的变量。

参数:

1)Unit   可选  Variant   结束字符位置移至的单元。可以是任何WdUnits,但wdLine除外。默认值是 wdWord 。

2)Extend   必需  WdMovementType 指定是移动还是扩展区域的末尾。如果值为 wdMove,则区域和选定内容对象的结尾都移到指定单位的末尾。如果使用了wdExtend,则该区域或所选内容的末尾被扩展到指定单位的末尾。默认值为 wdMove 。

实例:Range范围的信息统计及范围的调整

下面我们通过一个实例,给大家讲解一下上述方法的具体应用,在这个应用中我们会学习到Range范围信息的统计及范围的修正,我们先看下面的代码:


Sub mynzF()

[代码见教程]

   End Sub


代码截图:


代码的解读:


 1) Set myRange = ActiveDocument.Paragraphs(1).Range

    '显示第一段的字数,字符数,行数

    wordCount = myRange.ComputeStatistics(Statistic:=wdStatisticWords)

    charCount = myRange.ComputeStatistics(Statistic:=wdStatisticCharacters)

    linCount = myRange.ComputeStatistics(Statistic:=wdStatisticLines)

    MsgBox "当前文档第一段的字数:" & wordCount _

        & "; 当前文档第一段的字符数:" & charCount & "; 当前文档第一段的行数:" & linCount

以上代码首先将第一个段落赋给myRange变量,然后利用三个变量分别取得这个变量的字数,字符数,和行数,最后用对话框提示给用户。

 2) Set myRange = ActiveDocument.Range(0, 0)

    myRange.Select

k = Selection.EndOf(Unit:=wdParagraph, Extend:=wdExtend)

以上代码再次设置myRange变量,然后用.EndOf方法扩展到整个段落的结尾。

 3)ActiveDocument.Paragraphs.Add

    Set myTable = ActiveDocument.Tables.Add(Range:=ActiveDocument.Paragraphs(ActiveDocument.Paragraphs.Count).Range, _

        NumRows:=3, NumColumns:=3, DefaultTableBehavior:=wdWord9TableBehavior)

    myTable.Cell(1, 3).Select

Selection.EndOf Unit:=wdColumn, Extend:=wdExtend

 以上代码首先添加一个新的段落,然后在这个段落中插入表格,并选择第三行第一列的单元格,最后将这个单元格扩展都整列。

 4)ActiveDocument.Content.Select

Selection.Delete

以上代码将选择整个文档,然后删除。


下面我们看程序的运行效果:



今日内容回向:

   1  Word中Range对象的ComputeStatistics方法、Delete 方法、EndOf 方法的意义是什么?

   2  如何实现信息的统计及范围的调整?     



本讲内容参考程序文件:Doc 005文档.docm


 




我20多年的VBA实践经验,全部浓缩在下面的各个教程中:



分享成果,随喜正能量】没有谁的幸运,凭空而来,只有当你足够努力,你才会足够幸运,这世界不会辜负每一份努力和坚持。。

文章转载自VBA语言専攻,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论