实例1:统计修订的字数 在实际工作中,我们经常会对文档进行修改,为了不同用户查阅的方便,一般都会使用修订模式,此时会在文档中清楚的显示出来,但增加的字数和删除的字数却并未被统计出来。难道只能手工统计? 利用VBA宏代码,可以非常方便的统计出修订过程中增加的字数和删除的字数,具体代码如下: Sub test() Dim Rev As Revision, c1 As Long, n1 As Integer, a As String Dim Wd As Range, c2 As Long, n2 As Integer, b As String For Each Rev In ActiveDocument.Revisions If Rev.Type = wdRevisionInsert Then For Each Wd In Rev.Range.Words c1 = c1 + IIf(Wd Like "[一-龥]*", Wd.Characters.Count, 1) Next n1 = n1 + 1 a = a & Rev.Range.text & vbTab ElseIf Rev.Type = wdRevisionDelete Then For Each Wd In Rev.Range.Words c2 = c2 + IIf(Wd Like "[一-龥]*", Wd.Characters.Count, 1) Next n2 = n2 + 1 b = b & Rev.Range.text & vbTab End If Next MsgBox "增加内容" & n1 & "处共" & c1 & "字;删除内容" & n2 & "处共" & c2 & "字。" End Sub
上述代码主要是基于Word 2007对于Words集合对象的判断进行统计,宏名称“test”可以任意取;“[一-龥]”表示所有中文汉字。 代码检查无误之后,单击工具栏上的“保存”按钮执行保存操作,返回Word窗口之后,按下A l t+F8组合键,打开“宏”对话框,选择列表框中的“test”,单击右侧的“运行”按钮,很快会看到准确的结果,包括增加和删除共几种、多少字,这样就清晰多了。
如果通过手工的方法进行操作,既麻烦也不方便,其实这里可以利用VBA代码解决这一问题,代码如下: Sub test() Dim oFootNote As Footnote, myRange As Range Dim BeforeName As String, BeforeSize As Single On Error Resume Next Application.ScreenUpdating = False For Each oFootNote In ActiveDocument.Footnotes With oFootNote Set myRange = ActiveDocument.Range(.Reference.Start, .Reference.End) .Range.Copy With myRange .Text = "(JZ: )" BeforeName = .Font.Name BeforeSize = .Font.Size myRange.SetRange .Start + 4, .Start + 4 .Paste .Font.Name = BeforeName .Font.Size = BeforeSize End With End With Next Application.ScreenUpdating = True End Sub 如果需要重新设置标记,可以对“.Text="(J Z:)" ”这一行进行更改;“BeforeName = .Font.Name”这一行是取得之前的字号大小,“.Font.Name =BeforeName”和“.Font.Size = BeforeSize”分别用来重新设置字体和字号。检查无误后,单击工具栏上的“保存”按钮,依次执行“文件→关闭并返回到Microsoft Word”命令,返回Word窗口,然后“运行”该宏命令,你就可以看到最终结果了。
实例3:从任意页面编排页码 很多时候,我们在使用Word编排文档时,经常需要从文档的某个页面开始显示页码,而不是从文档的第1页显示页码。对于比较熟悉Word的朋友来说,这只是个简单的问题:先分节,然后断开节链接,最后在节中插入重新编号的页码即可。但是对于不经常使用Word的朋友来说,要快速、顺利完成这几个操作并非易事。 其实,我们也可以借助VBA宏解决这一问题,而且操作更为简单。打开目标文档,按下Alt+F11组合键,打开Microsoft Visual Basic编辑器窗口,双击左侧目标文档文 件名下的ThisDocument,粘贴如下代码: Sub test() Dim p As Integer On Error Resume Next p = InputBox("请输入起始编排页码的页次") With Selection .GoTo What:=wdGoToPage, Count:=p .InsertBreak Type:=wdSectionBreakContinuous .Sections(1).Footers(1).LinkToPrevious = False With .Sections(1).Footers(1).PageNumbers .RestartNumberingAtSection = True .StartingNumber = 1 .Add PageNumberAlignment:=wdAlignPageNumberCenter, FirstPage:=True End With End With End Sub