2016-08-24 10 views
1

Ich habe bereits den Code zum Suchen und Ersetzen in Microsoft Word mit einem VBA-Makro, aber im Moment kopiert und kopiert mein Code die gleiche Funktion mehrmals.Mehrere Wörter suchen und ersetzen

Was würde ich tun möchte, ist ein Wörterbuch der Wörter haben, die ersetzt werden müssen, so zum Beispiel:

old_word: new_word

Dann habe ich das VBA-Skript durchlaufen und die notwendigen Änderungen im Dokument.

Mein Code für jetzt ist und wiederholt sich für jedes neue Wortpaar.

Sub change_words() 

    With Selection.Find 
     .Text = "optimize" 
     .Replacement.Text = "optimise" 
     .Forward = True 
     .Wrap = wdFindContinue 
     .MatchWholeWord = True 
    End With 

    Selection.Find.Execute Replace:=wdReplaceAll 

    With Selection.Find 
     .Text = "utilized" 
     .Replacement.Text = "utilised" 
     .Forward = True 
     .Wrap = wdFindContinue 
     .MatchWholeWord = True 
    End With 

    Selection.Find.Execute Replace:=wdReplaceAll 

End Sub 

Vielen Dank im Voraus

Antwort

1
Sub change_words(ByVal findWord, byVal replaceWord) 

    With Selection.Find 
     .Text = findWord 
     .Replacement.Text = replaceWord 
     .Forward = True 
     .Wrap = wdFindContinue 
     .MatchWholeWord = True 
    End With 
    Selection.Find.Execute Replace:=wdReplaceAll 
End Sub 

Wenn Sie Ihre Funktion ändern Parameter zu akzeptieren, wie gezeigt, können Sie es in einer Schleife aufrufen können, und (zum Beispiel) passieren in den Werten, die Sie wie so wollen :

Dim myDict : Set myDict = CreateObject("Scripting.Dictionary") 
myDict("optimize") = "optimise" 
myDict("utilized") = "utilised" 
For myLoop = 0 to myDict.Count - 1 
    change_words myDict.Keys()(myLoop), myDict.Items()(myLoop) 
Next 

Das sollte Ihnen ermöglichen, den Code ohne Wiederholung zu verwenden.