簡體   English   中英

使用 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 的值可以是不同的長度,因此字符串的總長度可能會有所不同。 包含此字符串的單元格還有其他非隱藏文本,需要單獨保留。

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

您可以使用簡單的通配符搜索和替換。 搜索模式如下所示:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM