找到&使用VBA替换MS Word表中的可变长度文本

时间:2015-12-03 21:07:46

标签: replace ms-word find word-vba

我有一个包含大量表格的长MS Word文档,并且许多表格在每个单元格中都包含隐藏文本,其中包含文本字符串,如“Cell_ID [x,y]”。该字符串是固定的,除了X&的值。 Y可以是1-1000的整数值。

我希望能够拥有一个VBA宏,可以通过编程方式删除每个表中所有出现的文本字符串。如果它是一个固定的字符串,那么我可以简单地进行查找和替换,但是因为X&的值。 Y可以是不同的长度,弦的总长度可以变化。包含此字符串的单元格还包含其他非隐藏文本,需要单独保留。

我的代码可以循环遍历文档中的所有表格,但我不知道如何进行如上所述的查找/替换。

1 个答案:

答案 0 :(得分:0)

您可以使用简单的通配符搜索和替换。搜索模式如下所示:

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