VBA:结合查找替换批量检索关键词
目錄
一、問題假設(shè)
1.待處理文件
2.假設(shè)處理要求
二、關(guān)鍵思路
1.遍歷Excel單元格
2.Word中查找替換
三、參考代碼
四、操作步驟及效果
1.步驟
(1)準備
(2)開始運行
(3)選擇文件
(4)點擊確定,處理完成
2.驗證
五、代碼源文件
注意:因為此問題可以結(jié)合大學(xué)日常用得較多的Excel,作為存儲多個關(guān)鍵詞的載體。此文便在Excel中寫代碼,也方便操作。
一、問題假設(shè)
1.待處理文件
假如現(xiàn)在有一個文件夾,里面有一篇Word文檔(右);需要檢索的詞記錄在相同文件夾下的另一個Excel工作簿中的Sheet1這張表格的A列(左,第一行是標題,不參與檢索),即查找的內(nèi)容,替換的內(nèi)容為第B列,C列可以選擇是否用通配符替換。
示例文件夾及其文件2.假設(shè)處理要求
需要將上圖所有Word文件中包含Excel表格里的關(guān)鍵詞所地方左右加上中括號。
二、關(guān)鍵思路
1.遍歷Excel單元格
遍歷存放多個關(guān)鍵詞的Excel表格“關(guān)鍵詞.xlsx”的Sheet1的A列的單元格。
2.Word中查找替換
每個單元格的值作為Word查找的內(nèi)容,在Word中將查找到的區(qū)域標記在中括號內(nèi)。
參數(shù)設(shè)置:
查找替換參數(shù)這里前面兩個關(guān)鍵詞用的是不勾選通配符替換,第三個是通配符替換,有時寫法上可能稍有差別。
關(guān)于Word(通配符)替換的內(nèi)容,可以關(guān)注我的專欄
Word(通配符)替換https://www.zhihu.com/column/c_1517437402993397760
了解之前收錄的更多典型示例。
三、參考代碼
Rem 此處以下為主程序 Sub Word批量替換()Dim sht As WorksheetDim wdApp As ObjectDim fd As FileDialogDim fso As ObjectDim fNameDim aDocDim arrSet sht = ThisWorkbook.Sheets("sheet1")Set wdApp = CreateObject("Word.Application")Set fd = Application.FileDialog(msoFileDialogFilePicker)Set fso = CreateObject("Scripting.FileSystemObject")arr = sht.Cells(1, 1).CurrentRegionWith fd.AllowMultiSelect = True.InitialFileName = ThisWorkbook.Path.Title = "選擇Word文件(可多選)".Filters.Clear.Filters.Add "所有文件", "*.*", 1.Filters.Add "Word文件", "*.doc*;*.dot*", 2If .Show ThenApplication.ScreenUpdating = FalseFor Each fName In .SelectedItemsOn Error Resume NextIf fso.GetExtensionName(fName) Like "do[ct]*" And Not fName Like "*~$*" ThenSet aDoc = wdApp.Documents.Open(fName)For i = LBound(arr, 1) + 1 To UBound(arr, 1)Call 處理過程(aDoc, CStr(arr(i, 1)), CStr(arr(i, 2)), CBool(arr(i, 3)))NextaDoc.Close -1j = j + 1Debug.Print j, fName, "處理完成"End IfNextApplication.ScreenUpdating = TrueEnd IfEnd WithSet sht = NothingSet fd = NothingSet wdApp = NothingSet fso = NothingSet aDoc = NothingMsgBox Format(j, "完成 共處理了0個Word文件") End SubRem 此處以下為替換過程 Sub 處理過程(aDoc, findText As String, Optional replaceText As String = "^&", Optional wildCards As Boolean = False)On Error GoTo err1With aDoc.Content.Find.ClearFormatting.Forward = True.Wrap = 0.MatchWildCards = wildCards.Text = findText.Replacement.ClearFormatting.Replacement.Text = replaceText.Execute Replace:=2End WithExit Suberr1:Debug.Print Err.Description End Sub四、操作步驟及效果
1.步驟
(1)準備
打開Excel工作簿【關(guān)鍵詞.xlsm】,同時關(guān)閉掉需要處理的Word文件
(2)開始運行
點擊Excel表格中的【執(zhí) 行】或者在代碼主程序范圍內(nèi)點擊運行按鈕
開始運行的兩種方法(3)選擇文件
按下圖所示:選擇要處理的Word文件(可多選),點擊【打開】
選擇文件并打開(4)點擊確定,處理完成
點擊確定注意:因為有一個文件在測試的時候處理了,此處我只選擇了2個文件處理,是沒有問題的。
2.驗證
打開剛剛處理過的Word文件:
發(fā)現(xiàn)每一個Word文件第一處符合要求的關(guān)鍵詞已經(jīng)按要求標記/替換完成。
五、代碼源文件
鏈接:?https://pan.baidu.com/s/1Z8vL08TljVpBlbAYq_Ly1g?pwd=ypkd?提取碼: ypkd 復(fù)制這段內(nèi)容后打開百度網(wǎng)盤手機App,操作更方便哦
源文件二維碼打開文件,在表格中填好查找替換相關(guān)參數(shù),然后直接點擊操作即可。
總結(jié)
以上是生活随笔為你收集整理的VBA:结合查找替换批量检索关键词的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 前端读取字节流
- 下一篇: FFmpeg浅尝辄止(四)——音频的解码