2017-10-19 95 views
0

我需要找到并删除在Word 2010文档以下模式的每一次出现:寻找具有可变内容的文本和字段在Word

RPDIS→ text {INCLUDEPICTURE c:\xxx\xxx.png" \*MERGEFORMAT} text ←RPDIS 

其中:

  1. RPDIS→←RPDIS是开始和结束分隔符

  2. 开始和结束分隔符之间可以只是文本或文本以及可变内容的字段

*通配符在Word中查找和替换对话框,如果只包含文本会发现模式,但它会忽略其中的文字与领域相结合的模式。并且^19将在结束分隔符之前找到该字段但不是该模式的其余部分。

任何人都可以帮忙吗?

回答

0

这是一个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 

希望有所帮助。

+0

我编辑了您的问题以反映您的意见,然后在答案中做出了相应的更改。 – xidgel

+0

我曾尝试使用仅包含以下文本的Word文档,但似乎不起作用。我做错了什么? TEXT: 我想保留此文字RPDIS→即将删除{INCLUDEPICTURE“P%20E%20R%20S%20O%20N%20N%20E%20L/Images/emo_happy.gif”\ x \ y \ * MERGEFOMAT }被删除←RPDIS,仅此而已。 – Bobette

+0

我不完全明白你的意思是“......它似乎没有工作......”。你可以给出一个具体的例子,你开始的文本**和**你想要的文本后,找到/替换? – xidgel

相关问题