这是一个VBA解决方案。它通配符搜索RPDIS→*←RPDIS
。如果找到的文本包含^ 19(假设字段代码可见;如果对象是可见的而不是字段代码,则适当的测试是文本包含^ 01),找到的文本被删除。请注意,不是关心嵌入字段的类型---它会删除任何和所有嵌入字段发生在RPDIS→
和←RPDIS
之间,因此使用时风险自负。此外,代码分别具有ChrW(8594)
和ChrW(8592)
以匹配右箭头和左箭头。如果你的箭头编码不同,你可能需要改变它。
Sub test()
Dim wdDoc As Word.Document
Dim r As Word.Range
Dim s As String
' Const c As Integer = 19 ' Works when field codes are visible
Const c As Integer = 1 ' Works when objects are visible
Set wdDoc = ActiveDocument
Set r = wdDoc.Content
With r.Find
.Text = "RPDIS" & ChrW(8594) & "*" & ChrW(8592) & "RPDIS"
.MatchWildcards = True
While .Execute
s = r.Text
If InStr(1, s, chr(c), vbTextCompare) > 0 Then
Debug.Print "Delete: " & s
' r.Delete ' This line commented out for testing; remove comments to actively delete
Else
Debug.Print "Keep: " & s
End If
Wend
End With
End Sub
希望有所帮助。
我编辑了您的问题以反映您的意见,然后在答案中做出了相应的更改。 – xidgel
我曾尝试使用仅包含以下文本的Word文档,但似乎不起作用。我做错了什么? TEXT: 我想保留此文字RPDIS→即将删除{INCLUDEPICTURE“P%20E%20R%20S%20O%20N%20N%20E%20L/Images/emo_happy.gif”\ x \ y \ * MERGEFOMAT }被删除←RPDIS,仅此而已。 – Bobette
我不完全明白你的意思是“......它似乎没有工作......”。你可以给出一个具体的例子,你开始的文本**和**你想要的文本后,找到/替换? – xidgel