显示活动字数(Microsoft Word)
Word在状态栏上显示各种信息,这些信息可以在您编写时为您提供帮助。例如,状态栏显示文档中的页数和当前页上的行号。一件有用的事情是,状态栏在您键入时显示文档中的单词数。
但是,Word并未内置此功能。状态栏不能通过宏重新配置,除了显示或隐藏整个栏或向其写消息外。对连续向状态栏写入消息的宏进行编码将意味着不会显示正常信息,因此使用状态栏的解决方案可能是不可接受的。
可以编写一个宏,该宏将连续检查文档中的字数,然后将结果显示在文档的另一个区域,例如标题栏或工具栏按钮。根据您所使用的系统类型,这种解决方案可能无法接受;您将需要进行一些测试以查看是否正确。用于计算文档字数的内部代码相当慢,尤其是在文档变大时。这意味着不断检查字数可能会降低整个系统的速度,甚至可能达到无法接受的程度。
注意这一点,请考虑以下宏集:
Sub AutoExec() NumberOfWords End Sub Sub NumberOfWords() Dim lngWords As Long Dim myRange As Range With Word.Application If .Windows.Count > 0 Then Set myRange = ActiveDocument.Content lngWords = myRange.ReadabilityStatistics(1).Value .Caption = Format(lngWords, "##,##0") & " words - Microsoft Word" Else .Caption = "Microsoft Word" End If .OnTime Now + TimeValue(OnTm(lngWords)), "NumberOfWords" End With End Sub Private Function OnTm(ByVal lngWd As Long) As String Select Case lngWd \ 1000 Case 0 To 10 OnTm = "00:00:01" Case 11 To 20 OnTm = "00:00:05" Case 21 To 30 OnTm = "00:00:10" Case 31 To 40 OnTm = "00:00:15" Case Else OnTm = "00:00:20" End Select End Function
此集中包含三个宏,每个宏执行不同的任务。 Word启动时,第一个宏名为AutoExec,将自动运行。它的唯一目的是第一次调用下一个宏NumberOfWords。
NumberOfWords宏是此集合的主力。它检查以查看是否在Word中打开了任何窗口。如果是这样,则它将调用Word的内部编码来确定文档中的单词数。然后,它格式化输出并将其显示在窗口的标题栏上。
如果没有打开的窗口,则宏仅在标题栏上显示“ Microsoft Word”。
NumberOfWords要做的最后一件事是告诉自己何时再次运行。它通过使用VBA的OnTime功能来完成此操作,将重新启动时间设置为在接下来的20秒内的某个时间。这是第三个宏OnTm起作用的地方。它查看当前文档中的单词数,并确定NumberOfWords宏的两次运行之间的间隔。如果您的文档中有10,000个或更少的单词,则宏将每秒运行一次。如果有11,000至20,000个单词,则每5秒运行一次,依此类推。
进行此检查的原因已在本技巧的前面部分介绍:字数计算和标题栏信息的格式可能需要一段时间(以VBA术语),并且,如果您的文档很大,则可能导致不必要的和明显的延迟在更新文档中。如果需要,您可以使用OnTm函数中的编码来确定所用文档类型的最佳延迟细分。
注意:
如果您想知道如何使用此页面(或_WordTips_网站上的任何其他页面)上描述的宏,我准备了一个包含有用信息的特殊页面。
_WordTips_是您进行经济有效的Microsoft Word培训的来源。
(Microsoft Word是世界上最流行的文字处理软件。)本技巧(1608)适用于Microsoft Word 97、2000、2002和2003。