
Ich will ein Makro schreiben, das meine mit dem Formeleditor erstellten Gleichungen in einen Textrahmen einfügt und sie mit einer Nummer versieht.
Mein Problem dabei ist, dass ich keine Ahnung von Programmieren habe.

Das Makro soll folgendes machen:
Die von mir erstellte Formel markiere ich (ähnlich wie beim Beschriften, mit der rechten Maustaste) und starte das Makro. Das Makro schneidet die Formel aus und kopiert sie in die Zwischenablage, dann fügt es an der Stelle einen Textrahmen ein (ganze Seitenbreite keine Umrahmung). In den Textrahmen kommen zwei Tabs rein, ein zentrierter in der Mitte und ein rechtsbündiger am rechten Rand. An dem zentrierten Tab fügt das Makro meine Formel aus der Zwischenablage ein, an den rechtsbündigen Tab kommt dann in Klammer, die Nummer (aus dem Nummerkreis Formel, Ebene 1). Zum Schluß wird noch die Nummer markiert und ein Referenzdialog aufgerufen, wo ich einen Referenznamen eintragen kann.
Ok soweit so gut, ich natürlich, so blauäugig wie ich bin, habe versucht das Makro mit dem Makrorekorder aufzuzeichnen, doch irgendwie schreibt der Rekorder nicht mit, wenn ich mit F2 oder auch Entertaste in den Rahmen hineinwechsle. Somit fügt er zuerst den Rahmen ein (der dann markiert ist) und dann löscht er den Rahmen und fügt die Formel ein.
Hier ist der Code:
Code: Alles auswählen
sub fn
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:Cut", "", 0, Array())
rem ----------------------------------------------------------------------
dim args2(4) as new com.sun.star.beans.PropertyValue
args2(0).Name = "AnchorType"
args2(0).Value = 0
args2(1).Name = "Pos.X"
args2(1).Value = 0
args2(2).Name = "Pos.Y"
args2(2).Value = 0
args2(3).Name = "Size.Width"
args2(3).Value = 16999
args2(4).Name = "Size.Height"
args2(4).Value = 499
dispatcher.executeDispatch(document, ".uno:InsertFrame", "", 0, args2())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "Tabstops.TabStops"
args3(0).Value = Array(Array(8500,com.sun.star.style.TabAlign.CENTER,","," "),Array
(17000,com.sun.star.style.TabAlign.RIGHT,","," "))
dispatcher.executeDispatch(document, ".uno:Tabstops", "", 0, args3())
rem ----------------------------------------------------------------------
dim args4(0) as new com.sun.star.beans.PropertyValue
args4(0).Name = "Text"
args4(0).Value = CHR$(9)
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args4())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Paste", "", 0, Array())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Escape", "", 0, Array())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "Text"
args7(0).Value = CHR$(9)+"("
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args7())
rem ----------------------------------------------------------------------
dim args8(5) as new com.sun.star.beans.PropertyValue
args8(0).Name = "Type"
args8(0).Value = 23
args8(1).Name = "SubType"
args8(1).Value = 0
args8(2).Name = "Name"
args8(2).Value = "Formel"
args8(3).Name = "Content"
args8(3).Value = ""
args8(4).Name = "Format"
args8(4).Value = 4
args8(5).Name = "Separator"
args8(5).Value = "."
dispatcher.executeDispatch(document, ".uno:InsertField", "", 0, args8())
rem ----------------------------------------------------------------------
dim args9(0) as new com.sun.star.beans.PropertyValue
args9(0).Name = "Text"
args9(0).Value = ")"
dispatcher.executeDispatch(document, ".uno:InsertText", "", 0, args9())
rem ----------------------------------------------------------------------
dim args10(1) as new com.sun.star.beans.PropertyValue
args10(0).Name = "Count"
args10(0).Value = 1
args10(1).Name = "Select"
args10(1).Value = false
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args10())
rem ----------------------------------------------------------------------
dim args11(1) as new com.sun.star.beans.PropertyValue
args11(0).Name = "Count"
args11(0).Value = 1
args11(1).Name = "Select"
args11(1).Value = true
dispatcher.executeDispatch(document, ".uno:GoLeft", "", 0, args11())
end sub

Code: Alles auswählen
sub macro2
Dim Doc As Object
Dim Cursor As Object
Dim Frame As Object
Dim FrameCursor As Object
Doc = StarDesktop.CurrentComponent
Cursor = Doc.Text.createTextCursor()
Cursor = Doc.CurrentController.getViewCursor()
Frame = Doc.createInstance("com.sun.star.text.TextFrame")
Frame.AnchorType = com.sun.star.text.TextContentAnchorType.AT_PARAGRAPH
Frame.FrameWidthPercent=100
Doc.Text.insertTextContent(Cursor, Frame, False)
FrameCursor = Frame.createTextCursor()
FrameCursor.String = "Hier soll meine zuvor ausgewählte Formel hinein."
end sub
Ich habe es aufgegeben und nun bitte ich euch mir bei meinem Problem zu helfen.
Ich bedanke mich schonmal im Voraus.
Danke
Bye
Waldemar