除非注明,文章均為 戰(zhàn)戰(zhàn)如瘋 原創(chuàng),轉(zhuǎn)載請保留鏈接: http://www./cat4/411.html,VBA交流群273624828。
之前我們講過一些excel vba操作word的例子,這節(jié)我們再來看一個VBA在Word中應(yīng)用的實(shí)例?,F(xiàn)在我手上有很多word文檔,現(xiàn)在我需要將所有Word中的某個詞改成另一個詞,比如在實(shí)際工作中需要將所有客戶報(bào)告中的聯(lián)系電話改為新的號碼。之前我們都是在Excel中操作Word,這次我們直接在Word中運(yùn)行宏。在Word中運(yùn)行VBA和在Excel中相似,首先必須要啟用宏,然后Alt+F11就可以打開宏編輯界面輸入代碼。
這個問題的思路很簡單,遍歷每一個Word文件,對每個文件中的某個詞進(jìn)行全部替換即可。Word VBA中的遍歷和Excel是相同的,用Dir函數(shù)即可。提到替換我們首先應(yīng)該想到Word中有一個替換的功能,可以一次性替換文檔中的某個詞,如果我們錄制出這個替換的宏,然后再加上個循環(huán)的代碼這不就可以完成任務(wù)了嗎?看下面的代碼
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 = "戰(zhàn)戰(zhàn)如瘋" .Replacement.Text = "戰(zhàn)戰(zhàn)不瘋" .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
因?yàn)槲覀冞@個宏是在Word中運(yùn)行的,所以沒有之前講過的在Excel中調(diào)用Word那么復(fù)雜,可以直接用Document代碼當(dāng)前文檔,Open方法打開,將打開的文檔設(shè)為活動文檔(Activate),中間一大段都是錄制的,感興趣的可以百度下各個參數(shù)是什么意思。然后保存、關(guān)閉活動文檔,Dir下一個文檔。
除了錄制宏我們在之前“VBA批量生成Word報(bào)告“中講了一種查找替換的方法,在這里自然也是可以用的
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("戰(zhàn)戰(zhàn)不瘋") '尋找客戶這個關(guān)鍵詞,將其用表格中的姓名來代替 Selection.Text = "戰(zhàn)戰(zhàn)如瘋" Selection.HomeKey Unit:=6 Loop ActiveDocument.Save ActiveDocument.Close myfile = Dir Loop End Sub
同樣的循環(huán)遍歷,只不過替換代碼換了下,可以參考之前我們用Excel操作Word的例子,用法是完全相同的。
本節(jié)示例文件下載地址:http://pan.baidu.com/s/1i323vlb。
|