2016-12-02 25 views
-1

我不知道是什麼原因造成的問題。我的目標非常簡單 - 我想用增量數字替換一些文本「abc.XXXX」,以便將其轉換爲「abc.0001」,「abc.0002」,「abc.0003」等等。會發生的是,對於一些文檔,腳本會一直運行而不會替換任何東西(至少不會顯示),也不會給出錯誤。搜索並替換問題無限循環

這裏是我當前的代碼

With ActiveDocument.Content 
     With .Find 
      .ClearFormatting 
      .Replacement.ClearFormatting 
      .text = ABC_123.XXXX 
      .Forward = True 
      .Wrap = wdFindContinue 
      .Format = False 
      .MatchWildcards = False 
      .Execute Replace:=wdReplaceOne 
     End With 

     While .Find.Found = True 
      count = count + 1 
      lastReqNr = lastReqNr + 1 
      .text = ABC_123. & Right(String(4, "0") & lastReqNr, 4) 
      .Collapse wdCollapseEnd 
      .Find.Execute Replace:=wdReplaceOne 
     Wend 
    End With 

對於一些文件的代碼工作完全正常,但有些文件是造成問題。每種情況下都正確填寫變量。原因可能是我正在進行修改跟蹤嗎?

+1

有沒有什麼建議可以提供它運行到無限循環狀況的一例的方式?另外,'S_FIND'究竟等於什麼? – SalvadorVayshun

+0

嘿,當然。 'S_FIND'等於例如「ABC_123.XXXX」和無限循環似乎出現以防文本類似於:'ABC_123.XXXX \ n(原:ABC_003.004)'。我認爲一個infinte循環不應該發生,因爲替換用ABC_123.0001覆蓋當前值,這與ABC_123.XXXX不再匹配 – Erik

+0

當循環發生時,我試圖更詳細地找出它:每當段落是正確的在文本後面取代。然後用'ABC_123.0001ABC_123.0002ABC_123.0003 ...'替換ABC_123.XXXX',等等。任何人都知道爲什麼段落/換行符會導致這種行爲? – Erik

回答

0

我的不好。沒有提到文檔中的跟蹤更改是活動的。如果搜索文本被某人刪除,它將被修改。該宏將替換文本(當軌道更改處於活動狀態時)將用必須替換的文本創建另一個修訂。

簡單,但並不完美的解決方案是前值更改爲

Forward = False