
Wie kann ich ein Makro für OpenOffice Writer schreiben, das über den Wörtern/Zeichen, die ich mit der Maus ausgewählt habe, ein Hervorhebungszeichen wie einen Punkt setzt?
Ich habe versucht, ein Makro aufzuzeichnen, aber es ist fehlgeschlagen.
Ich hoffe, dass mir hier jemand helfen kann
Ich versuche, ein Makro für OpenOffice Writer und LibreOffice Writer zu schreiben. Dieses Makro fügt Writer eine Symbolleiste hinzu, die der chinesischen Satzzeichen-Symbolleiste in der chinesischen Version von MS Word ähnelt. Die Schaltflächen der Symbolleiste sind chinesische Satzzeichen. Eine der Schaltflächen ist das Hervorhebungszeichen, das in vereinfachtem Chinesisch in China verwendet wird. Das Hervorhebungszeichen ist ein Punkt unter dem chinesischen Zeichen, das hervorgehoben wird, wenn die Textrichtung horizontal ist, und ein Punkt rechts neben dem hervorgehobenen Zeichen, wenn die Textrichtung vertikal ist.
Ich kenne weder OpenOffice Basic noch andere Sprachen, die zum Schreiben von Computerprogrammen verwendet werden, aber ich weiß, dass der Makrorecorder des Writers einige Codes aufzeichnen kann, die zum Schreiben des benötigten Makros verwendet werden können. Und ich google weiter, um weitere Informationen zu finden und zu lernen, wie man das Makro schreibt. Für die meisten Satzzeichen sind die Codes einfach.
Um beispielsweise eine Stoppmarkierung einzufügen, lauten die Codes:
rem U+3002
sub cp01
dim document as object
dim dispatcher as object
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "Text"
args1(0).Value = "。"
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args1())
end sub
Der Makrorecorder von LibreOffice 3.4 konnte jedoch kein funktionsfähiges Makro für das Hervorhebungszeichen aufzeichnen. Tatsächlich schloss sich Writer unerwartet, sobald ich das Hervorhebungszeichen in den Schrifteffekten des Dialogfelds „Zeichen“ von Writer von „(Ohne)“ in „Punkt“ änderte. Ich war gezwungen, OpenOffice.org 3.3 und 3.4 herunterzuladen und zu installieren.
Der Makrorecorder von OpenOffice.org 3.3 kann ebenfalls nicht aufzeichnen, der von 3.4 hingegen schon. Das Makro lautet:
sub Test20120206_1
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 -------------------------------
dispatcher.executeDispatch(document, ".uno:EmphasisMark", "", 0, Array())
end sub
Dieses Makro funktioniert nicht.
Antwort1
Ich habe die Webseite gefunden: http://user.services.openoffice.org/en/forum/viewtopic.php?f=45&t=21813
Ein Makro von FJCC hat mir sehr gefallen, da es kurz ist und beschreibt, wie man einen Effekt auf ausgewählte Zeichen anwendet. Das könnte genau das sein, was ich brauche.
Doc = ThisComponent
Selections = Doc.CurrentSelection
FirstSelection = Selections.getByIndex(0)
TextString = FirstSelection.String
UCaseStr = UCase(TextString)
FirstSelection.String = UCaseStr
Dann habe ich diesen Code mit den Makros aus MS Word, dem Japanischen und von Pitonyak A. neu kombiniert und eine funktionsfähige Version gefunden:
sub EmphasisMark
Doc = ThisComponent
Selections = Doc.CurrentSelection
FirstSelection = Selections.getByIndex(0)
If FirstSelection.CharEmphasis = com.sun.star.text.FontEmphasis.NONE Then
FirstSelection.CharEmphasis = com.sun.star.text.FontEmphasis.DOT_BELOW
Else
FirstSelection.CharEmphasis = com.sun.star.text.FontEmphasis.NONE
End If
end sub
Das ist es, was ich brauche. Endlich ...