计数文本框中的字符(Microsoft Word)
如果您的文档的各个文本框中都包含文本,则应该理解,如果您进行字数统计,则Word不会在其返回的字数统计中包括文本框中的字。如果您只想知道文本框中的单词数,可以采用以下方法:
在启动“字数统计”功能之前,只需选择要计数其字数的文本框。然后,Word忠实地仅计算文本框中的单词,而忽略文档的其余部分。
但是,有一种情况,这种先选后选技术将不起作用。如果您有多个包含单词的文本框,并且这些文本框已分组,那么如果选择该组,则“字数统计”功能将不会将它们识别为“可计数的”。换句话说,要对组成该组的文本框中的字符进行计数,必须首先对组进行分组,然后对每个文本框进行计数。
显然,这样做可能会很麻烦。解决此问题的一种方法是使用为您执行这些步骤的宏。
下面的宏TextBoxCount逐步浏览文档中的所有形状。如果将它们分组,则它们将自动取消分组。然后,它在每个文本框上执行单词计数,并返回一个对话框,该对话框指示文本框内的单词和字符数(总和)以及整个文档(包括文本框)中的单词和字符数。
Sub TextBoxCount() Dim lngTBWords As Long Dim lngTBChars As Long Dim lngDocWords As Long Dim lngDocChars As Long Dim shpTemp As Shape Dim wcTemp As Dialog Dim bDone As Boolean Application.ScreenUpdating = False 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 'Get count in main document Selection.HomeKey Unit:=wdStory Set wcTemp = Dialogs(wdDialogToolsWordCount) wcTemp.Update wcTemp.Execute lngDocWords = wcTemp.Words lngDocChars = wcTemp.Characters 'Step through shapes and add counts 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 Str(ActiveDocument.Shapes.Count) _ & " text boxes found with" & vbCr _ & Str(lngTBWords) & " word(s) and" & vbCr _ & Str(lngTBChars) & " characters" & vbCr & vbCr _ & " In the total document there are" & vbCr _ & Str(lngDocWords) & " word(s) and" & vbCr _ & Str(lngDocChars) & " characters" End Sub
请记住,该宏取消了文档中先前完成的所有分组。因此,您可能要在保存文档后运行宏,然后在计数后丢弃文档(从磁盘重新加载)。
注意:
如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)中描述的宏,我准备了一个包含有用信息的特殊页面。
_WordTips_是您进行经济有效的Microsoft Word培训的来源。
(Microsoft Word是世界上最流行的文字处理软件。)本技巧(1839)适用于Microsoft Word 97、2000、2002和2003。