2016-03-03 34 views
0

我試圖在Word文檔中找到正則表達式字符串<XE "[email protected]>。在宏中找不到工作,在做手動時

背景:我正在構建一個索引,並自動選取要通過另一個宏添加的段落。有些條目開始「我的汽車 - 意味着一輛車」,或者「ii。超級 - 意味着真的很好」。我想從索引條目中刪除編號部分,因此認爲這樣做的一種方法是查找{XE "i. Automobile ...}部分,並使用RegEx刪除i.

當我手動搜索我的字符串時,它工作正常,並拿起匹配。但是,我的宏不起作用。當逐步通過,然後我得到While .Execute下一步步驟只是去Wend然後End With。它確實問我是否想從頭開始搜索,所以.Find工作有點,但它爲什麼不找到任何匹配?

非常感謝您的任何建議!

Sub Hide_Roman_Numerals_from_Index() 
Dim defText As String 
Dim regExSearch As String 
Dim oRng As Word.Range, rng As Word.Range 

If ActiveWindow.ActivePane.View.ShowAll = False Then 
    ActiveWindow.ActivePane.View.ShowAll = True 
End If 

Set oRng = ActiveDocument.Range 
'Call ClearFindAndReplaceParameters(oRng) 
regExSearch = "<XE ""[email protected]>" 
oRng.Find.ClearFormatting 
With oRng.Find 
     .Text = regExSearch 
     .Replacement.Text = "" 
     .Forward = True 
     .Wrap = wdFindAsk 
     .Format = False 
     .MatchCase = False 
     .MatchWholeWord = False 
     .MatchAllWordForms = False 
     .MatchSoundsLike = False 
     .MatchWildcards = True 
    While .Execute 
     Set rng = oRng.Paragraphs(1).Range 
     rng.Select 
    Wend 
End With 

If ActiveWindow.ActivePane.View.ShowAll = True Then 
    ActiveWindow.ActivePane.View.ShowAll = False 
End If 
'Call ClearFindAndReplaceParameters(oRng) 
End Sub 
+0

那麼,你的代碼適用於我在我的測試環境中,除了它會持續循環第一個找到的實例。正如在前面的問題中所討論的那樣,您需要重置用於查找的Range對象。但是,它沒有做的是刪除羅馬數字後面的點空格? –

+0

找不到你想要做的事情?你想要替換''的每個實例,或者只是執行find,以便將包含''的段落分配爲範圍? – Rahul

回答

1

我認爲這種方法適合你,如果我得到你的問題的權利。

'BruceWayne 
Sub Colorgreenfromw() 
Application.ScreenUpdating = False 
Dim oPar As Paragraph 
Dim oRng As Word.Range 
For Each oPar In ActiveDocument.Paragraphs 
    Set oRng = oPar.Range 
    With oRng 
     With .Find 
      .ClearFormatting 
      .Font.Color = wdColorGreen 
      .Replacement.ClearFormatting 
      .Text = "<XE ""[email protected]>" 
      .Replacement.Text = "" 
      .Forward = True 
      .Wrap = wdFindStop 
      .Format = False 
      .MatchWildcards = True 
      .Execute 
     End With 
      If .Find.Found Then 
       Set oRng = oPar.Range 
        oRng.Font.Color = wdColorGreen 
       Set oRng = Nothing 
      End If 
    End With 
Next 
End Sub 
+0

@BruceWayne:綠色是我最喜歡的顏色! – Rahul

+0

@BruceWayne:你能告訴我這是你想要的嗎? – Rahul

+0

嘿拉胡爾,對於延誤抱歉。它很接近,但並不完全。通過這個工作時,我在雜草中變得很漂亮,並且困惑了我自己。我將退後一步,看看我需要做什麼。但是,這是一個幫助,因爲我可以使用'.Paragraphs'來循環。謝謝你的幫助隊友! – BruceWayne