[英]Find & replace variable length text in MS Word tables using VBA
我有一個很長的 MS Word 文檔,里面有很多表格,許多表格在每個單元格中都有隱藏的文本,其中包含一個文本字符串,如“Cell_ID[x,y]”。 該字符串是固定的,除了 X 和 Y 的值可以是 1-1000 范圍內的整數值。
我希望能夠有一個 VBA 宏,它可以以編程方式刪除每個表中所有出現的此文本字符串。 如果它是一個固定字符串,那么我可以簡單地進行查找和替換,但是由於 X 和 Y 的值可以是不同的長度,因此字符串的總長度可能會有所不同。 包含此字符串的單元格還有其他非隱藏文本,需要單獨保留。
我有可以遍歷文檔中所有表格的代碼,但我不確定如何進行上述查找/替換。
您可以使用簡單的通配符搜索和替換。 搜索模式如下所示:
Cell_ID\[[0-9]{1;4},[0-9]{1;4}\]
或者
Cell_ID\[[0-9]{1,4},[0-9]{1,4}\]
取決於設置的列表分隔符(參見區域設置)。 或者您可以使用更簡單的模式,該模式不會檢查 x 和 y 是否僅為數字:
Cell_ID\[*,*\]
這是一個完整的 VBA 示例:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.