使用 VBA 在 MS Word 表格中查找和替換可變長度文本 (Find & replace variable length text in MS Word tables using VBA)


問題描述

使用 VBA 在 MS Word 表格中查找和替換可變長度文本 (Find & replace variable length text in MS Word tables using VBA)

我有一個很長的 MS Word 文檔,其中包含許多表格,並且許多表格在每個單元格中都隱藏了文本,其中包含諸如“Cell_ID[x,y]”之類的文本字符串。字符串是固定的,除了 X & Y 可以是 1‑1000 範圍內的整數值。

我希望能夠有一個 VBA 宏,它可以以編程方式刪除每個表中該文本字符串的所有出現。如果它是一個固定的字符串,那麼我可以簡單地進行查找和替換,但是由於 X & 的值 Y 可以是不同的長度,字符串的總長度可以變化。包含此字符串的單元格還有其他需要單獨保留的非隱藏文本。

我的代碼可以遍歷文檔中的所有表格,但我不確定如何進行上述查找/替換。


參考解法

方法 1:

You can use a simple wildcard search and replace. The search pattern would look as follows:

Cell_ID\[[0‑9]{1;4},[0‑9]{1;4}\]

or

Cell_ID\[[0‑9]{1,4},[0‑9]{1,4}\]

depending on what is set a your list separator (cf. regional settings). Or you could use an even simpler pattern that would not check whether x and y are digits only:

Cell_ID\[*,*\]

Here is a full VBA sample:

Selection.Find.ClearFormatting

' find hidden text only
Selection.Find.Font.Hidden = True
Selection.Find.Replacement.ClearFormatting
With Selection.Find
    .Text = "Cell_ID\[[0‑9]{1;4},[0‑9]{1;4}\]"
    .Replacement.Text = ""
    .Forward = True
    .Wrap = wdFindAsk
    .Format = False
    .MatchCase = False
    .MatchWholeWord = False
    .MatchByte = False
    .MatchAllWordForms = False
    .MatchSoundsLike = False
    .MatchFuzzy = False
    .MatchWildcards = True
End With
Selection.Find.Execute Replace:=wdReplaceAll

(by RobertDirk Vollmar)

參考文件

  1. Find & replace variable length text in MS Word tables using VBA (CC BY‑SA 2.5/3.0/4.0)

#find #ms-word #replace #vba






相關問題

禁止查找和 grep“無法打開”輸出 (Suppress find & grep "cannot open" output)

Cakephp 複雜查詢 (Cakephp complex query)

如何在 hasMany 關聯中使用 CakePHP 2 查找? (How to use CakePHP 2 find in a hasMany association?)

Jquery 響應 find() 失敗? (Jquery respond to find() fail?)

正則表達式記事本++ (RegEx Notepad++)

使用 VBA 在 MS Word 表格中查找和替換可變長度文本 (Find & replace variable length text in MS Word tables using VBA)

獲取子字符串周圍的字符數半徑 (Get set number radius of characters around substring)

僅在不到一天的文件中搜索字符串 (Search for a string only in files less than a day old)

c++ 查找和替換整個單詞 (c++ Find and replace whole word)

使用 grep 過濾後如何忽略行首和行的一部分 (How to ignore beginning of line and parts of a line after filtering with grep)

查找函數加上循環給出 1004 錯誤 (Find function couple with loop gives 1004 error)

VS Code 查找和替換:當我輸入 ctrl+h 時,有沒有辦法保留我以前的查找項? (VS Code find-and-replace: is there a way to keep my previous find term when I type ctrl+h?)







留言討論