🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

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

WRITER hat alles, was Sie von einer modernen, voll ausgestatteten Textverarbeitung erwarten.
Antworten
Ilmarinen
! Supporter - Spende !
Beiträge: 2
Registriert: Do 11. Mai 2023, 13:37

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

Beitrag von Ilmarinen » Do 11. Mai 2023, 23:23

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

musikai
Beiträge: 263
Registriert: Do 14. Mai 2015, 17:53

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

Beitrag von musikai » Fr 12. Mai 2023, 01:13

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
Win7 Pro, Sibelius 7.1.3, Lubuntu 15.10, LibO 4.4.7, OO 4.1.3
Free Project: LibreOffice Songbook Architect (LOSA)
http://struckkai.blogspot.de/2015/04/li ... itect.html

Ilmarinen
! Supporter - Spende !
Beiträge: 2
Registriert: Do 11. Mai 2023, 13:37

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

Beitrag von Ilmarinen » Fr 12. Mai 2023, 17:30

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


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten