除非注明,文章均为 战战如疯 原创,转载请保留链接: 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。
|