作为一个公司里的小渣渣,经常会接到各种奇怪的活计,比如说:让我将一个几百页的文档中的全部尾注上的文字,拷贝到文中引用的相应位置,替换掉相应的尾注编号。文档几百页,尾注也有几百个啊,于是我想起了VBA。但是之前只有短短一面之缘——用VBA缩小了word为当中的一堆图片。于是我开始了艰难的VBA之旅,花了一天的时间,完成了这个VBA程序,作为独立编写的VBA启蒙程序,在这里很愿意与大家分享下我的成果和感受。
首先,我觉得,word VBA的困难之处不在于语法,语法很简单,难在word错综繁杂的属性状态,使得整个word VBA变得零散不堪,这时候有个非常好的东西叫做“Help”。
先放下Help不提,来看下我接到的文档的格式,就是我的这个VBA即将面对的对象具有怎样的特点:
我现在要把它变成以下的样子:
怎样实现呢?就通过以下方法实现:
首先,调出“开发工具”选项卡,调出的方式如下图:word选项-->常用-->勾选 在功能区显示“开发工具”选项卡。
第二步,新建宏。开发工具-->输入宏名 endnotetext_replace_endnoteNum-->创建
第三步,完成代码。代码为:
Sub endnotetext_replace_endnoteNum()
'
' endnotetext_replace_endnoteNum 宏
'
'
Dim text1 As Word.Range 'text1将要存储尾注的文字
Dim Num, endnoNum As Integer 'Num为要操作的尾注编号,endnoNum为尾注的总个数
endnoNum = ActiveDocument.Endnotes.Count
Num = 1
For i = 1 To endnoNum
Set text1 = ActiveDocument.Endnotes(Num).Range 'Num始终为1不变是因为第一个尾注被替换之后就没有了,第二个尾注又变成了第一个
text1.Select
text1.Copy
Selection.GoTo what:=wdGoToLine, _
which:=wdGoToAbsolute, Count:=1 '将光标移至文档第一行
Selection.GoTo what:=wdGoToEndnote, _
which:=wdGoToAbsolute, Count:=Num '将光标移至第Num条尾注的引用位置之前
Selection.Expand Unit:=wdCharacter '将光标扩展至整个尾注引用编号
Selection.PasteAndFormat _
wdFormatSurroundingFormattingWithEmphasis '粘贴,粘贴的内同的格式与周围格式相同
Next
End Sub
第四步,点击 运行。
完成