Wie kann ich ein einzelnes Wort in mehreren verschiedenen Wörtern finden und ersetzen?

472
exsonic01

Mit MS Word oder Notepad ++ möchte ich ein einzelnes Vokabular finden und durch mehrere verschiedene Synonyme ersetzen.

Zum Beispiel habe ich in meinem Text festgestellt, dass ein bestimmtes Wort AAAA zu häufig erscheint. Daher möchte ich diese AAAA in BBBB, CCCC oder DDDD ändern. Wie finden und ersetzen Sie "schön" bis "erstaunlich", "hübsch" oder "verführerisch".

Es kann zufällig sein (60% von BBBB, 30% von CCCC und 10% von DDDD, zufällig) oder es kann in Ordnung sein (ersetzen Sie es mit BBBB, dann ersetzen Sie das nächste CCCC, ersetzen Sie das nächste DDDD, dann ersetzen Sie es.) nächstes mal wieder zu BBBB ...)

Ist es möglich, ein solches Suchen und Ersetzen von MS Word oder Notepad ++ aus durchzuführen? Wäre es besser, ein Skript oder ein Makro zu schreiben, um eine solche Aktion auszuführen?

0

2 Antworten auf die Frage

0
harrymc

Notepad ++ hat kein zufälliges Ersetzen oder gar Round-Robin-Ersetzen, und Regex tut dies auch nicht. Es ist kein Programmierwerkzeug und auch nicht Word.

Ein Skript / Makro zu schreiben ist viel besser. Wenn Sie Word erwähnen, kann VBA dies sicherlich tun. Sie können einen Schnellstart starten, indem Sie eine Sitzung aufzeichnen, in der Sie solche Ersetzungen vornehmen, und diese dann mit einer Schleife erweitern.

Der Artikel von Microsoft ist ein guter Ausgangspunkt: Automatisieren Sie Aufgaben mit dem Macro Recorder .

Vielen Dank für Ihre Empfehlung, ich lese bereits. exsonic01 vor 5 Jahren 0
0
Rich Michaels

Versuchen Sie das ... es sollte Ihnen einen Anfang geben.

Sub FindReplaceSynonyms() Dim doc As word.Document, rng As word.Range Dim FindStr As String, SynonymStr As String Dim SplitStr() As String, i As Long Set doc = ActiveDocument Set rng = doc.Content FindStr = "beautiful" SynonymStr = "astonishing,pretty,alluring" SplitStr = Split(SynonymStr, ",") With rng.Find .ClearFormatting .Format = False .Forward = True .MatchCase = True .Text = FindStr .Wrap = wdFindStop .Execute Do While .found rng.Text = SplitStr(i) i = i + 1 If i > UBound(SplitStr) Then i = 0 rng.Collapse wdCollapseEnd .Execute Loop End With MsgBox "Action Complete", vbExclamation, "Custom Replace" End Sub 
Vielen Dank, ich habe es getestet und das funktioniert perfekt !! exsonic01 vor 5 Jahren 0