2016-01-05 118 views
1

我已經編寫了一個代碼,用word doc中的相應值替換某些單詞。這很好。 但是,我被困在一個需要幫助的場景中。VBA - 用條件替換單詞

我在我的文檔中有一個名爲「DATE」的特殊詞,它必須由「StartDate」或「EndDate」取代。 在這裏,我需要一個應該讀取整個單詞文檔的代碼。 如果它找到一個名爲「End」的單詞,,「DATE」一詞必須替換爲「EndDate」。 否則,默認情況下,「日期」可以替換爲「開始日期」本身。

With WDoc.Content.Find .Text = "End" 
If (.Text = "End") Then .Text = "DATE" 
    .Replacement.Text = "EndDate" 
    .Wrap = wdFindContinue 
    .Execute Replace:=wdReplaceAll 
End If 
.Execute FindText:=Key, ReplaceWith:=Dict(Key) 
End With 

任何人都可以幫我嗎?

謝謝!

+2

你爲什麼不告訴我們,你迄今編寫的代碼。這樣,提出解決方案會更容易。 – rohrl77

+0

隨着WDoc.Content.Find 。文本= 「結束」 如果(。文本= 「結束」)。然後 。文本= 「DATE」 .Replacement.Text = 「結束日期」 .Wrap = wdFindContinue 。執行替換:= wdReplaceAll End If .Execute FindText:= Key,ReplaceWith:= Dict(Key) End With – sweety

+0

這是用EndDate替換DATE而不搜索文檔,儘管文檔中不存在END。 :( – sweety

回答

2

下面的腳本將在ActiveDocument中搜索匹配案例的單詞「End」,如果案例不重要,則更改MatchCase = False。 如果找到「End」,則.Text更改爲「Date」並替換爲「EndDate」。

我不知道你行.Execute FindText:=Key, ReplaceWith:=Dict(Key)

Sub FindFindAgainAndReplace() 

    With ActiveDocument.Content.Find 
     .Text = "End" 
     .Forward = True 
     .Wrap = wdFindContinue 
     .Format = False 
     .MatchCase = True 
     .MatchWholeWord = False 
     .MatchWildcards = False 
     .MatchSoundsLike = False 
     .MatchAllWordForms = False 
     .Execute 

     If .Found = True Then 

      .Text = "Date" 
      .Replacement.Text = "EndDate" 
      .Execute Replace:=wdReplaceAll 

     End If 
    End With 

End Sub 
+0

謝謝!這幫了我.. – sweety

+0

@sweety只記得投票並標記你發現回答你的問題的答案。享受StackOverFlow! –