分享

用VBA宏提高Word操作效率-PCMAG中文站-和讯网

 枫叶晚秋 2010-11-25

用VBA宏提高Word操作效率

2010年03月18日11:39      来源:      手机免费访问:hexun.com      好文我顶(0)

   在日常工作和生活中,Word是我们习惯使用的办公软件,很多时候为了某些“变态”的要求,往往需要通过大量繁复的步骤进行操作,效率相当之低。
   其实,利用VBA宏代码,可以大大提高工作效率,本文以Word 2003/2007这两个应用最为广泛的版本为例,介绍一些比较典型的应用实例。

实例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”,单击右侧的“运行”按钮,很快会看到准确的结果,包括增加和删除共几种、多少字,这样就清晰多了。

实例2:快速提取脚注内容
   同事传过来一个文件,要求将脚注的内容提取出来,文档如下图所示,其中作了几处脚注,现在要求将脚注的内容提取到正文中相应脚注编号的位置,在这里添加标记(JZ:*),此处的“*”指脚注的内容(不含序号,如此文①和②),同时删除原来的编号。



   如果通过手工的方法进行操作,既麻烦也不方便,其实这里可以利用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



   检查无误之后,按下Ctrl+S组合键执行保存操作,依次执行“文件→关闭并返回到Microsoft Word”命令,然后按F5键运行VBA宏,按照提示输入起始编码页码的数字,例如“3”,确认之后关闭对话框。

实例4:将多页文档分解成单页文档
由于工作的需要,现在要求将多页的Word文档按照每个页面单独存储为1个Word文档,除了枯燥的剪切、粘贴之外,也可以利用V B A宏解决这一困难。首先请打开相应的多页Word文档,打开Microsoft Visual Basic编辑器窗口,在右侧窗格中插入一个新的空白模块,手工粘贴如下代码:



Sub test()
myPath = "H:\temp\"
Selection.HomeKey Unit:=wdStory
Set myRange = Selection.Range
curpage = 0
Application.ScreenUpdating = False
Do
prepage = curpage
pagenum = pagenum + 1
Set myRange = myRange.GoToNext(What:=wdGoToPage)
curpage = myRange.Start
endpage = myRange.Previous.Start
If curpage = prepage Then _
endpage = ActiveDocument.Content.End
ActiveDocument.Range(prepage, endpage).Copy
With Documents.Add
.Content.Paste
.SaveAs myPath & "Page" & pagenum & ".doc"
.Close
End With
If curpage = prepage Then Exit Do
Loop
Application.ScreenUpdating = True
End Sub
   上述代码中的“H:\temp\”表示存储单页文档的位置,请根据实际情况而定,检查无误之后保存代码并返回Word界面。按下Alt+F8组合键,选中列表框中的“test”宏,单击右侧的“运行”按钮,稍等片刻即可将当前的多页Word文档按照页面快速分割存储为一个一个的Word文档,是不是很方便?需要指出的是,如果没有选择内容,那么VBA宏会针对当前文档的所有页面进行自动分割,如果选定页面,那么就只会针对当前选定的页面进行分割。


 

 

【作者:王志军 来源:电脑时空】 (责任编辑:汪艳)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多