分享

VBA批量替换多个word中的特定词 | VBA实例教程

 gblhp 2015-02-16

除非注明,文章均为 战战如疯 原创,转载请保留链接: http://www./cat4/411.html,VBA交流群273624828。

之前我们讲过一些excel vba操作word的例子,这节我们再来看一个VBA在Word中应用的实例。现在我手上有很多word文档,现在我需要将所有Word中的某个词改成另一个词,比如在实际工作中需要将所有客户报告中的联系电话改为新的号码。之前我们都是在Excel中操作Word,这次我们直接在Word中运行宏。在Word中运行VBA和在Excel中相似,首先必须要启用宏,然后Alt+F11就可以打开宏编辑界面输入代码。

这个问题的思路很简单,遍历每一个Word文件,对每个文件中的某个词进行全部替换即可。Word VBA中的遍历和Excel是相同的,用Dir函数即可。提到替换我们首先应该想到Word中有一个替换的功能,可以一次性替换文档中的某个词,如果我们录制出这个替换的宏,然后再加上个循环的代码这不就可以完成任务了吗?看下面的代码

Sub 宏1()
Dim mypath, myfile
mypath = ThisDocument.Path & "\"
myfile = Dir(mypath & "*.docx")
Do While myfile <> ""
Documents.Open FileName:=mypath & myfile, Visible:=False
Documents(myfile).Activate
'下面的宏是录制的
Selection.Find.ClearFormatting
Selection.Find.Replacement.ClearFormatting
With Selection.Find
.Text = "战战如疯"
.Replacement.Text = "战战不疯"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
.MatchByte = True
.MatchWildcards = False
.MatchSoundsLike = False
.MatchAllWordForms = False
End With
Selection.Find.Execute Replace:=wdReplaceAll
'上面的代码是录制的
ActiveDocument.Save
ActiveDocument.Close
myfile = Dir
Loop
End Sub

因为我们这个宏是在Word中运行的,所以没有之前讲过的在Excel中调用Word那么复杂,可以直接用Document代码当前文档,Open方法打开,将打开的文档设为活动文档(Activate),中间一大段都是录制的,感兴趣的可以百度下各个参数是什么意思。然后保存、关闭活动文档,Dir下一个文档。

除了录制宏我们在之前“VBA批量生成Word报告“中讲了一种查找替换的方法,在这里自然也是可以用的

Sub 宏2()
Dim mypath, myfile
mypath = ThisDocument.Path & "\"
myfile = Dir(mypath & "*.docx")
Do While myfile <> ""
Documents.Open FileName:=mypath & myfile, Visible:=False
Documents(myfile).Activate
Do While Selection.Find.Execute("战战不疯") '寻找客户这个关键词,将其用表格中的姓名来代替
Selection.Text = "战战如疯"
Selection.HomeKey Unit:=6
Loop
ActiveDocument.Save
ActiveDocument.Close
myfile = Dir
Loop
End Sub

同样的循环遍历,只不过替换代码换了下,可以参考之前我们用Excel操作Word的例子,用法是完全相同的。

本节示例文件下载地址:http://pan.baidu.com/s/1i323vlb

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

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多