ich habe mir folgendes Makro aus vom Makrorekorder generiertem Code zusammengedengelt. Da ich einiges an Such-/Ersetzen-Listen habe, hier nur das Wesentliche in eine Sub gestopft (daher auch die Definition als Public). Es sucht alle Vorkommen des Suchbegriff search$ im Text, weist eine Text- und Hintergrundfarbe zu und macht ihn fett und groß. Ich habe es hier zur besseren Anschaulichkeit vereinfacht, normalerweise gebe ich per Parameterübergabe jedem Suchwort noch eine individuelle Farbe mit etc. pp.:
Code: Alles auswählen
Public search_only_param(21) as new com.sun.star.beans.PropertyValue
sub get_access
''''Code aus dem Makrorekorder
rem get access to the document
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
End Sub
Sub textcolor_big_bold_test (search$)
''''Code aus dem Makrorekorder adaptiert
If search_only_param(0).Name <> "SearchItem.StyleFamily" Then
GoSub INIT
End If
search_only_param(11).Value = search$
dispatcher.executeDispatch(document, ".uno:ExecuteSearch", "", 0, search_only_param())
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "FontColor"
args1(0).Value = 15645440
dispatcher.executeDispatch(document, ".uno:CharColorExt", "", 0, args1())
rem ----------------------------------------------------------------------
args1(0).Name = "BackColor"
args1(0).Value = 7798903
dispatcher.executeDispatch(document, ".uno:CharBackgroundExt", "", 0, args1())
rem ----------------------------------------------------------------------
args1(0).Name = "Bold"
args1(0).Value = true
dispatcher.executeDispatch(document, ".uno:Bold", "", 0, args1())
rem ----------------------------------------------------------------------
dim args3(2) as new com.sun.star.beans.PropertyValue
args3(0).Name = "FontHeight.Height"
args3(0).Value = 18
args3(1).Name = "FontHeight.Prop"
args3(1).Value = 100
args3(2).Name = "FontHeight.Diff"
args3(2).Value = 0
dispatcher.executeDispatch(document, ".uno:FontHeight", "", 0, args3())
Exit Sub
INIT:
search_only_param(0).Name = "SearchItem.StyleFamily"
search_only_param(0).Value = 2
search_only_param(1).Name = "SearchItem.CellType"
search_only_param(1).Value = 0
search_only_param(2).Name = "SearchItem.RowDirection"
search_only_param(2).Value = true
search_only_param(3).Name = "SearchItem.AllTables"
search_only_param(3).Value = false
search_only_param(4).Name = "SearchItem.SearchFiltered"
search_only_param(4).Value = false
search_only_param(5).Name = "SearchItem.Backward"
search_only_param(5).Value = false
search_only_param(6).Name = "SearchItem.Pattern"
search_only_param(6).Value = false
search_only_param(7).Name = "SearchItem.Content"
search_only_param(7).Value = false
search_only_param(8).Name = "SearchItem.AsianOptions"
search_only_param(8).Value = false
search_only_param(9).Name = "SearchItem.AlgorithmType"
search_only_param(9).Value = 0
search_only_param(10).Name = "SearchItem.SearchFlags"
search_only_param(10).Value = 0
search_only_param(11).Name = "SearchItem.SearchString"
search_only_param(11).Value = ""
search_only_param(12).Name = "SearchItem.ReplaceString"
search_only_param(12).Value = ""
search_only_param(13).Name = "SearchItem.Locale"
search_only_param(13).Value = 255
search_only_param(14).Name = "SearchItem.ChangedChars"
search_only_param(14).Value = 2
search_only_param(15).Name = "SearchItem.DeletedChars"
search_only_param(15).Value = 2
search_only_param(16).Name = "SearchItem.InsertedChars"
search_only_param(16).Value = 2
search_only_param(17).Name = "SearchItem.TransliterateFlags"
search_only_param(17).Value = 256
search_only_param(18).Name = "SearchItem.Command"
search_only_param(18).Value = 1
search_only_param(19).Name = "SearchItem.SearchFormatted"
search_only_param(19).Value = false
search_only_param(20).Name = "SearchItem.AlgorithmType2"
search_only_param(20).Value = 1
search_only_param(21).Name = "Quiet"
search_only_param(21).Value = true
Return
End Sub
Code: Alles auswählen
Sub Woerter_markieren
get_access
textcolor_big_bold_test ("wer")
textcolor_big_bold_test ("wie")
textcolor_big_bold_test ("was")
textcolor_big_bold_test ("blablubb")
textcolor_big_bold_test ("wieso")
textcolor_big_bold_test ("weshalb")
textcolor_big_bold_test ("warum")
End Sub
Beispiel: Gegeben sei ein Text, in dem die Wörter "wer", "wie", "was", "wieso", "weshalb" und "warum" vorkommen, "blablubb" jedoch nicht.
Das Ergebnis ist, dass "wer", "wie" und "was" bunt, groß und fett sind, "wieso", "weshalb" und "warum" aber nur noch fett und groß, jedoch nicht bunt.
Ich bastel schon eine Weile mit Makros und hab auch ein anderweitig ein paar Grunderfahrungen in der Programmierung, bewege mich hier aber eher auf dem Niveau eines Script-Kiddies als auf dem des professionellen Coders…
Daher nun MEINE FRAGEN:
* Kann ich irgendwie bewirken, dass es auch nach Nichtfund beim nächsten Treffer wieder bunt wird?
* Liegt der Fehler irgendwo systematisch in meinem Code oder bin ich auf einen Bug im Dispachter gestolpert?
Freu mich auf Antwort und Ideen!
LG,
Dale