Word Makro Suchen und Ersetzen mit Erweiterung Text färben

x-Timmey-x

Banned
Registriert
Juni 2007
Beiträge
2.732
Hallo,

ich benötige eure Hilfe beim Thema Word Makro.
Folgende Aufgabe stellt sich mir:

- Suche das Wort "Beispiel"
- Ersetze das Wort durch "Geschafft"
außerdem
- Das Wort "Geschafft" soll die Farbe "Rot" haben

Dies ist meine Anforderung.
Natürlich habe ich auch vorab das Internet durchstöbert, bin jedoch nicht fündig geworden.

Auf dieser Seite Klick habe ich mir ein "Suche und Ersetze - Makro" zusammen gebaut, dieses schaut wie folgt aus:

Code:
Sub Suchen_und_Ersetzen_Test()
'
' Suchen_und_Ersetzen_Test Makro
'
'
    With Selection.Find
           .Text = "Beispiel"
           .Replacement.Text = "Geschafft"
           .Forward = True
           .Wrap = wdFindContinue
    End With

Selection.Find.Execute Replace:=wdReplaceAll

End Sub

Schön wäre es außerdem wenn das Makro mehrere "Suche und Ersetze" Abfragen durchführen kann.
Sprich ein Makro das folgendes tut:
1. "Beispiel" durch "Geschafft" ersetzen
2. "Ente" durch "Huhn" ersetzen
3. "Hund" durch "Katze" ersetzen

die Krönung wäre nun für "Vorgang 1" die Farbe "Rot", für "Vorgang 2" die Farbe "Blau" und für "Vorgang 3" die Farbe "Grün" zu setzen. Oder je nachdem was einfacher ist, nicht den Vorgang sondern das finale Wort als Bedingung zu nehmen. Sprich wenn "Geschafft" dann "Rot", wenn "Huhn" dann "Blau" und wenn "Katze" dann Grün".

Ich hoffe das war halbwegs verständlich und Ihr könnt mir behilflich sein.
Danke!
 
Zuletzt bearbeitet:
Hallo,

du kannst ja einmal Suchen - Ersetzen (Ersatzfarbe Rot oder was auch immer) machen und das aufzeichnen. Schon hast du dein Mustermakro zum Anpassen.
Viele Grüße, Halwe
 
Der Marko Recorder zeichnet den Farbwechsel nicht auf.
Mittels Suchen und Ersetzen kann ich auch nur den Text hervorheben und nicht färben.
Selbst die Farbe der Hervorhebung kann man nicht wechseln.

Zumindestens habe ich es nicht gefunden...
 
Kann es sein, dass du gar nicht farbige Wörter meinst, sondern wir vom Texthintergrund reden?
Ein "Markern" der Texte geht auch, aber da musst du die Markerfarbe vor dem Suchen/Ersetzen festlegen.
 
Hi,

vorab, ich bin leider nicht mehr ganz in VBA drin, aber evtl kannst die genaue Lösung dann selber zuende googlen :D

Code:
With Doc.Content.Font
        .Name = "Arial" '=Schriftart
        '.Size = 11 '=Schrifgrösse
        '.ColorIndex = wdBlack
End With

Diesen Code verwende ich in einer ähnlichen Funktion, evtl. kommst du damit ja weiter :)

Deine Krönung ist definitiv auch umsetzbar, eben etwas aufwändiger:
Ich würde ein struct erstellen mit allen Wörtern die ersetzt werden sollen und ein Struct mit den Wörtern wodurch.
und dann über eine for schleife durch das Struct wandern und dann eben über den Counter die entsprechende Farbe auswählen also dann
Code:
if Counter = 1 then 
  -> farbe = blau
end if

evtl. vereinfachst du dir das ganze auch indem du eine Funktion speziell für das suchen und ersetzen schreibst die dann mehrfach nacheinander mit den entsprechenden Übergabeparametern aufgerufen wird (also Wort, Ersatz und farbcode).

ich hoffe das hilft dir so weiter und du verstehst wie alles gemeint ist,

Grüße
Nico
 
Nein, es ging mir tatsächlich um das einfärben von Wörtern / Buchstaben.
Über die Suche und Ersetzen Funktion lässt sich leider nur der Text hervorheben (zu mindestens graphisch), ein einfärben ist nicht möglich. Dies war lediglich zur Information, da ich ursprünglich gehofft hatte es hierüber abzubilden.

@ Nico
Danke für deine Unterstützung, leider bin ich in programmieren nicht so fit... da benötige ich schon etwas Unterstützung.
Ich denke dein Vorschlag geht in diese Richtung Klick, dies ist leider für Excel und Zellen und funktioniert in Word so leider nicht.

Wichtig wäre jetzt erst einmal:
- bestimmte Wörter im Dokument zu färben

Anschließend können wir gerne schauen, wie ich meine vier "Suche und Ersetze" Makros, sowie die hoffentlich zukünftigen "Färbe" Makros, bündele.
 
Zuletzt bearbeitet:
Also wenn du mit "Einfärben" den Text selbst meinst - wo ist das Problem?
Du hast deine Word-Version nicht angegeben, aber bei Suchen/Ersetzen gibt es doch den Format-Button. Aber den hattest du ja schon gefunden, wenn du das Hervorheben gefunden hattest, oder?
Zusammen mit den regulären Ausdrücken kann man mit der Word-Suche fast alles machen, evtl. ist da nicht mal ein Makro vonnöten.
Aber ich verstehe auch, wenn man sich ein einfaches Beispiel sucht, um Makos zu üben.
 
Oh man danke!
Ich habe nochmal genauer nachgesehen...

Ich verwende Office 2013

Folgendes Makro hat der Recorder aufgenommen:

Code:
Sub Makro4()
'
' Makro4 Makro
'
'
    Selection.Find.ClearFormatting
    Selection.Find.Replacement.ClearFormatting
    Selection.Find.Replacement.Font.Color = 192
    With Selection.Find
        .Text = "Beispiel"
        .Replacement.Text = "Geschafft"
        .Forward = True
        .Wrap = wdFindContinue
        .Format = True
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    Selection.Find.Execute Replace:=wdReplaceAll
End Sub

Ich denke in dem Code ist noch etwas Optimierung / kürzungs potenzial vorhanden, doch es löst meine Aufgabe.
Jedoch hat es nur einen sehr geringen Lerneffekt, schöner wäre es gewesen meinen Ansatz zu Ende zu bringen und es nicht automatisiert erzeugt zu haben.

Falls sich jemand die Mühe machen möchte, ich wäre weiterhin sehr dankbar darüber!
Die Schriftfarbe versteckt sich in der Ersetzen Funktion unter: Ersetzen -> Erweitern -> Format -> Zeichen
Sehr unglücklicher Begriff meiner Meinung nach :)
 
Also wen du VBA lernen willst, solltest du dich der Hilfe zum entsprechenden VBA-Befehl beschäftigen, dort sind die Parameter beschrieben und du kannst leicht erkennen, was du brauchst und was nicht.
Ansonsten hast du ja nun alles was du brauchst. Die Makroaufzeichnung zeichnet eben alle Suchparameter auf, es könnte ja auch sein, dass da zwischenzeitlich welche geändert wurden, deshalb muss ein Makro ein bisschen weiter denken. Auch das gehört zum Erstellen von Markos dazu.
 
Zurück
Oben