精确统计Word文档字数

如果">Word文档包含各种文本框,执行字数统计(选择菜单“工具”→“字数统计”)时,文本框里面的文字不会计算在内,属于Word统计功能的“死角”。要是只想统计一下某个文本框的字数,解决办法是先选中本文框,然后再执行字数统计,这时Word只计算文本框内的字数,文档其余内容的字数被忽略。

  但是,这种选定文本框再统计字数的办法8630.html">有时候也可能无能为力。如果有多个定义成组的文本框,即使你选中了文本框的组,Word也不能计算文本框的字数。也就是说,如果要统计组里面某个文本框的字数,你必须先拆分组,然后再选中文本框统计字数。

  如果你经常要统计整个文档的字数,而且很在乎统计结果是否精确,Word统计功能对文本框的处理方式显然是一大麻烦。要彻底解决这个问题,最佳的办法是使用Word宏。下面的Word宏TextBoxCount实现了这个功能,它逐一访问文档包含的各个文本框,如果有多个文本框被定义成组,则自动拆分组。TextBoxCount宏计算每一个文本框的字数,最后用对话框显示出文档中所有文本框包含的字数和字符总数,以及整个文档的字数和字符总数(含文本框)。

Sub TextBoxCount()
Dim lngTBWords As Long ' 文本框的字数
Dim lngTBChars As Long ' 文本框的字符总数
Dim lngDocWords As Long ' 整个文档的字数
Dim lngDocChars As Long ' 整个文档的字符总数
'Shape代表一个图形层对象,例如自选图形(包含文本框)、
'任意多边形、OLE 对象、ActiveX 控件、图片等。Shape 对
'象是 Shapes 集合的一个成员,该集合包含了一篇文档正文
'部分的所有图形。
'为简单计,下文仍把Shape称为文本框,因为它是这里要处理
'的“主角”
Dim shpTemp As Shape
Dim wcTemp As Dialog '对话框
Dim bDone As Boolean

'关闭屏幕更新,以提高统计速度
Application.ScreenUpdating = False

'扫描整个文档,如果发现定义成组的文本框
'则拆分组。
'这里之所以要加上一个Do...Loop循环,是因为一旦拆分了定义成
'组的文本框,文档的文本框总数会发生变化。所以我们要加上一个
'Do...Loop循环多次扫描文档,直至最后一次扫描找不到定义成组
'的文本框为止。
Do
bDone = True
'对于当前文档包含的每一个文本框...
For Each shpTemp In ActiveDocument.Shapes
'如果已经定义了组
If shpTemp.Type = msoGroup Then
'拆分组
shpTemp.Ungroup
bDone = False
End If
Next shpTemp
Loop Until bDone

'统计文档主体的字数
Selection.HomeKey Unit:=wdStory
'将wcTemp设置为“字数统计”对话框
Set wcTemp = Dialogs(wdDialogToolsWordCount)
'执行“字数统计”对话框的功能
wcTemp.Update
wcTemp.Execute
'获得文档主体的字数和字符数
lngDocWords = wcTemp.Words
lngDocChars = wcTemp.Characters

'依次访问每一个文本框,统计字数
lngTBWords = 0
lngTBChars = 0
'对于当前文档的每一个文本框
For Each shpTemp In ActiveDocument.Shapes
'选中一个文本框
shpTemp.Select
'执行字数统计功能
wcTemp.Execute
'将该文本框的字数、字符数加入到累计数字
lngTBWords = lngTBWords + wcTemp.Words
lngTBChars = lngTBChars + wcTemp.Characters
Next shpTemp
'计算整个文档的字数、字符数
'即:把文档主体的字数、字符数加上文本框的字数、字符数
lngDocWords = lngDocWords + lngTBWords
lngDocChars = lngDocChars + lngTBChars
'最耗时的统计运算结束,允许更新屏幕
Application.ScreenUpdating = True
'显示出统计结果
MsgBox "文本框(Shape对象)总数:" & Str(ActiveDocument.Shapes.Count) & vbCr _
& "文本框的字数总计:" & Str(lngTBWords) & vbCr _
& "文本框的字符数总计:" & Str(lngTBChars) & vbCr & vbCr _
& "整个文档的字数总计:" & Str(lngDocWords) & vbCr _
& "整个文档的字符数总计:" & Str(lngDocChars)
End Sub

时间: 2024-10-23 04:25:11

精确统计Word文档字数的相关文章

java 如何精确获取word文档页数?有什么API吗?

问题描述 java 如何精确获取word文档页数?有什么API吗? java 通过poi是通过摘要获取word的页数,不准确. 请问还有什么其他的方法可以精确的获取word总页数吗? 有什么API吗? 项目运行在linux系统上 解决方案 没有办法,因为word文档页数是通过渲染整个word文档才能确定的.除非你发送到虚拟打印机,并且返回打印的页数,才能知道.

怎么使Word文档字数统计更方便

查看Word的下边栏,如下图所示: 文档字数统计更方便-word文档统计字数"> 当选中部分文字后,字数统计会显示为,如下图所示: 当点击字数统计边框时,会出字数统计的具体信息窗口,如下图所示: 可以使用此功能方便的统计文档字数.

Word文档字数统计如何全自动

  假设我们要将文章字数插入到文章的末尾,例如下图所示文中末尾"本文的字数为:"之后.先将光标定位到文档内需要插入文档字数的这个位置(不单是正文中,页眉页脚中也可以哦). 在Excel菜单栏依次单击"插入→文档部件→域"命令. 在选择域的对话框"类别"下拉列表中选择"文档信息"选项,再在"类别"下拉列表中选择"NumWords"选项,并在右侧相应栏设好置域属性格式及域数字格式,最后单击&

Word文档字数实时动态统计

在Word中,我们统计文章字数是利用"工具"中的"字数统计"命令.但是文章作了修改后,多次重复使用该命令不免麻烦. 采用下面的方法,可以实现文章字数的动态统计. 打开菜单"插入→域",选择"类别"中的"文档信息"和"域名"中的"NumChars","确定"退出,则出现阿拉伯数字形式的统计字符数. 如果你变动了文章的内容,需要再次统计字数时,只要选中

在Word文档中如何绘制直线呢?

  在Word文档中如何绘制直线呢? 1.打开"绘图"工具栏,方法为点击菜单栏的"视图"-"工具栏",找到"绘图",即可调出绘图工具栏; 2.点击绘图工具栏中的直线绘制工具; 3.在编辑区空白处单击左键,按住不放,拖出一根直线; 4.选中直线,右击,在弹出的菜单中找到"设置自选图形格式" 5.在"颜色与线条"选项卡中,可以设置直线的颜色和线形,粗细,箭头等. 6.在"大小&qu

Word文档怎么统计字数

  1.首先先打开需要统计字数的word文档. 2.打开文档后,在菜单栏里面有一个工具按钮. 3.单击工具按钮,在下拉的选项中选择字数统计. 4.单击字数统计按钮后,就会弹出如图所示对话框,这时就已经将你这篇文档里面的字数统计好了. 5.如果你要把脚注和尾注都计算在内的话,就在包括脚注和尾注前的方框里打勾即可.

word中插入域功能来动态统计文档字数

其实通过word"工具"->"字数统计"菜单也可以查看文档字数,这里介绍使用word"域"功能来动态显示字数统计.同理,你还可以使用"域"来做很多事. ①单击菜单栏上的"插入",在弹出的下拉列表中选择"域". ②在弹出的"域"窗口中"类别"里面选择"文档信息";在"域名"下面选择"NumCha

不启动Word查看文档字数统计的方法

对一些经常进行文字工作的人来说,用Word编辑文档往往要用到它的"字数统计"功能.大多数人都是通过打开Word 文档,用"工具"菜单的"字数统计"来统计文档字数的(整篇文档或选中部分文档都可以).这只是最常用的方法之一,Word还为我们提供了很多的高级设置如定制按钮.指定快捷键.用"插入""域"的功能.用"宏"的功能等等,来实现个性化的字数统计功能. 上面说到的方法都是在打开的Word文

将Doc或者Docx文档处理成html的代码逻辑;统计word中的字数,段数,句数,读取word中文档内容的代码逻辑

将Doc或者Docx文档处理成html的代码逻辑 下面是maven的配置代码: <!-- 文档处理所需的jar的依赖 --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.4</version> </dependency> <dependency> <