Automatischer Zeichenhintergrund

Alles zur Programmierung im OpenOffice.org
Antworten
max1605
Beiträge: 2
Registriert: So 10. Dez 2017, 02:20

Automatischer Zeichenhintergrund

Beitrag von max1605 » So 10. Dez 2017, 02:28

Hallo,

ich habe folgendes Problem:
Eigentlich arbeite ich mit Word von MS. Dort habe ich einige VBA-Makros erstellt, welche ich für meine Arbeit benötige.

Eins von diesen Makros markiert automatisch alle Zahlen in Grün. (Makro startet -> im gesamten Dokument werden alle Zahlen Grün hinterlegt -> Meldung "Fertig" erscheint -> mit wegklicken der Meldung wird das Makro geschlossen).

Wenn ich die .docm Datei mit Writer öffne, wird dieses VBA-Makro logischerweise nicht erkannt.
Wie kann ich ein gleichwertiges Makro für Writer erstellen? (Ich habe leider lediglich Grundkenntnisse in der Programmierung mit VB und VBA.)

Bei Writer heißt die Funktion "Zeichenhintergrund" und die Farbe ist "Grün 2". Aber wie kann ich das automatisieren, dass alle Zahlen im Text den Zeichenhintergrnd "Grün 2" haben?


Vielen Dank schonmal im Voraus!

max1605

mikele
Beiträge: 499
Registriert: Sa 23. Jul 2011, 22:09

Re: Automatischer Zeichenhintergrund

Beitrag von mikele » So 10. Dez 2017, 15:06

Hallo,
grundsätzlich lässt sich die Aufgabe auch ohne Makro lösen.
1) Du erstellst eine Zeichenvorlage mit den gewünschten Eigenschaften (hier: Zeichenhintergrund Grün2)
2) In deinem Text nimmst du Suchen&Ersetzen:
Suchen nach: [:digit:]
Weitere Optionen: Reguläre Ausdrücke
-> Alle suchen
3) Zuweisen der Formatvorlage (Doppelklick auf die Vorlage)
Das ganze lässt sich auch per Makro automatisieren. Auf die Schnelle per Makroaufzeichung:

Code: Alles auswählen

sub Zahlen_faerben
rem ----------------------------------------------------------------------
rem define variables
dim document   as object
dim dispatcher as object
rem ----------------------------------------------------------------------
rem get access to the document
document   = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")

rem ----------------------------------------------------------------------
dim args1(21) as new com.sun.star.beans.PropertyValue
args1(0).Name = "SearchItem.StyleFamily"
args1(0).Value = 2
args1(1).Name = "SearchItem.CellType"
args1(1).Value = 0
args1(2).Name = "SearchItem.RowDirection"
args1(2).Value = true
args1(3).Name = "SearchItem.AllTables"
args1(3).Value = false
args1(4).Name = "SearchItem.SearchFiltered"
args1(4).Value = false
args1(5).Name = "SearchItem.Backward"
args1(5).Value = false
args1(6).Name = "SearchItem.Pattern"
args1(6).Value = false
args1(7).Name = "SearchItem.Content"
args1(7).Value = false
args1(8).Name = "SearchItem.AsianOptions"
args1(8).Value = false
args1(9).Name = "SearchItem.AlgorithmType"
args1(9).Value = 1
args1(10).Name = "SearchItem.SearchFlags"
args1(10).Value = 65536
args1(11).Name = "SearchItem.SearchString"
args1(11).Value = "[:digit:]"
args1(12).Name = "SearchItem.ReplaceString"
args1(12).Value = ""
args1(13).Name = "SearchItem.Locale"
args1(13).Value = 255
args1(14).Name = "SearchItem.ChangedChars"
args1(14).Value = 2
args1(15).Name = "SearchItem.DeletedChars"
args1(15).Value = 2
args1(16).Name = "SearchItem.InsertedChars"
args1(16).Value = 2
args1(17).Name = "SearchItem.TransliterateFlags"
args1(17).Value = 1280
args1(18).Name = "SearchItem.Command"
args1(18).Value = 1
args1(19).Name = "SearchItem.SearchFormatted"
args1(19).Value = false
args1(20).Name = "SearchItem.AlgorithmType2"
args1(20).Value = 2
args1(21).Name = "Quiet"
args1(21).Value = true

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args1())

rem ----------------------------------------------------------------------
dim args2(1) as new com.sun.star.beans.PropertyValue
args2(0).Name = "Template"
args2(0).Value = "zahlen grün"
args2(1).Name = "Family"
args2(1).Value = 1

dispatcher.executeDispatch(document, ".uno:StyleApply", "", 0, args2())


end sub
Gruß,
mikele

max1605
Beiträge: 2
Registriert: So 10. Dez 2017, 02:20

Re: Automatischer Zeichenhintergrund

Beitrag von max1605 » Mo 11. Dez 2017, 23:04

Vielen Dank für deine Antwort.

Als ich deinen Code in ein OpenOffice Basic Makro einfügt und ausführt habe, dann wurden alle Zahlen im Text markiert/ausgewählt.
Habe noch folgendes beigefügt, damit die ausgewählten Zahlen in "Grün 2" eingefärbt werden und dann die Auswahl aufgehoben wird.

Code: Alles auswählen

rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "BackColor"
args3(0).Value = 6750054

dispatcher.executeDispatch(document, ".uno:BackColor", "", 0, args3())

rem ----------------------------------------------------------------------
dim args4(1) as new com.sun.star.beans.PropertyValue
args4(0).Name = "SearchItem.StyleFamily"
args4(0).Value = 2
args4(1).Name = "Quiet"
args4(1).Value = true

dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, args4())

Wie kann ich es machen, dass an Ende des ganzen noch eine Meldung angezeigt wird mit "Fertig" und einem "OK" Button um diese Meldung zu schließen?

Beste Grüße!

mikele
Beiträge: 499
Registriert: Sa 23. Jul 2011, 22:09

Re: Automatischer Zeichenhintergrund

Beitrag von mikele » Di 12. Dez 2017, 21:47

Hallo,
Als ich deinen Code in ein OpenOffice Basic Makro einfügt und ausführt habe, dann wurden alle Zahlen im Text markiert/ausgewählt.
Voraussetzung für die Färbung war, dass eine entsprechende Zeichenvorlage erstellt ist ...

Code: Alles auswählen

msgbox "Fertig"
Gruß,
mikele

Antworten