Seite 1 von 1

Makro für Wechsel der Schriftfarbe für einzelne Buchstaben

Verfasst: Do 11. Mai 2023, 23:23
von Ilmarinen
Hallo zusammen,
ich möchte in LibreOffice ein Makro erstellen, um in einem Text die Schriftfarbe für Buchstaben zu verändern. Dabei sollen den einzelnen Buchstaben feste Farben zugewiesen werden. Also alle "a" in blau, alle "b" in rot etc.
In Word ist mir das mit VBA über die Funktion "Suchen und Ersetzen" gelungen. Ich habe dann den relativ kurzen Code einfach vervielfälltigt und für jeden Buchstaben angepasst. In Basic ist aber der Code unheimlich lang und die Stelle mit dem Farbwechsel kann ich nicht erkennen.
Gibt es da eine schönere Lösung. Ich habe leider gar keine Erfahrung im Programmieren und schon gar nicht in Basic.

Ich hoffe, mir kann da jemand einen Tipp geben.

Herzliche Grüße
Ilmarinen

Re: Makro für Wechsel der Schriftfarbe für einzelne Buchstaben

Verfasst: Fr 12. Mai 2023, 01:13
von musikai
Hier ist ein funktionierender Basic Code:
https://ask.libreoffice.org/t/how-to-ch ... ro/11036/3

Sollte leicht für alle Buchstaben erweiterbar sein. Vielleicht könnte man anstelle der Farben auch Zeichenstile erstellen und zuweisen, aber im Moment reicht das vielleicht so.

Code: Alles auswählen

Sub runTest
	setColorToSpecificText("a", RGB(255,0,0)) ' Change all "a" to RED
	setColorToSpecificText("b", RGB(0,0,255)) ' Change all "b" to Blue
End Sub

Sub setColorToSpecificText(sSpecificText As String, lColor As Long)
Dim oSrchDescr As Variant
Dim aFound As Variant
Dim oNextText As Variant
Dim i As Long
	oSrchDescr = ThisComponent.createSearchDescriptor()
	oSrchDescr.setSearchString(sSpecificText)
	aFound = ThisComponent.findAll(oSrchDescr)
	For i = 0 To aFound.getCount() - 1
		oNextText = aFound.getByIndex(i)
		oNextText.CharColor = lColor
	Next i
End Sub

Re: Makro für Wechsel der Schriftfarbe für einzelne Buchstaben

Verfasst: Fr 12. Mai 2023, 17:30
von Ilmarinen
Hallo muiskai,
wow, das ging ja super schnell.
Ich habe das Makro auf die anderen Buchstaben erweitert und es funktioniert super.

Herzlichen Dank für Deine Hilfe
Ilmarinen