在提取資料時,會遇到具有相似格式的内容,例如同一個word文檔中出現了“(C01B35/06優先)”、(C01C11/00優先),(C01C18/00優先)……等,其存在相似的通配符格式,即"\(*優先\)",但如果直接全部替換,又有可能誤删資料。
必須先将所有符合這種格式的資料找出後形成數組,然後進行批量替換,如果手動錄入會非常麻煩,那麼可以用到下述代碼。以下以字元長度L為第二判别條件實作降噪,将需要删除的資料直接篩出,然後進行批量替換
先通過for循環和With Selection.Find 将帶有上述格式的,且字元長度<=20的全部資料存儲在a(0 to 1000)中。
然後在以指派後的a(0 to 1000)作為被替換文本進行批量replace成""即可。
注:如果電腦組態不高,建議将數組a的上限調小,分批次進行,否則電腦會假死。如果假死則可通過CTRL+PAUSE BREAK(num lock 左上的按鈕)暫停
Sub 替換文本()
Dim a(0 To 1000) As String
Dim search As String
Selection.HomeKey Unit:=wdStory
For i= 1 To UBound(a)
With Selection.Find
.Text = "\(*優先\)"
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindStop
.MatchWildcards = True '使用通配符
End With
Selection.Find.Execute
search = Selection.Text
L = Len(Selection.Text)
If L <= 20 Then
a(i) = Selection.Text
End If
Next i
For i = 1 To UBound(a)
With Selection.Find
.Text = a(i)
.Replacement.Text = ""
.Forward = True
.Wrap = wdFindContinue
.MatchWildcards = False '不使用通配符
End With
Selection.Find.Execute Replace:=wdReplaceAll
Next i
End Sub