von fiz » Mo, 17.03.2008 12:00
Hallo Leute,
leider bin ich im programmieren nicht bewandert, habe aber des öfteren schon mit aufgezeichneten Makros gearbeitet.
Ich benötige nun ein Makro, das ein Formular unter einem Namen "X" abspeichert und das Formular ausdruckt.
Hierbei ist X ein String, der aus dem Feld S1 des Formulars ausgelesen wird.
Meine beste Lösung, die ich bisher habe, ist die, dass das Makro zunächst das Formular unter einem Dummy-namen in das gewünschte Verzeichnis (Pfad) speichere, (damit sich oO für den späteren Befehl "speichern unter" schon mal das richtige Verzeichnis "merkt"). Dann legt das Makro den String aus S1 in die Zwischenablage und führt den Befehl "Speichern unter" aus. Dann muß ich manuell "Einfügen" und das Speichern starten.
Also kurz gesagt:
Makro starten (mit einem Button)
String ins geöffnete Speichern-Dialogfenster pasten
- Speichern-Button drücken
Das macht drei Klicks wo ich eigentlich nur einen bräuchte. Außerdem ist das ganze so kompliziert, dass das Makro langsam ist.
Zum gruseln hier der unendlich komplizierte aufgezeichnete Code
Code: Alles auswählen
sub SelektionEnde
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(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$S$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$E$8"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, Array())
rem ----------------------------------------------------------------------
dim args5(2) as new com.sun.star.beans.PropertyValue
args5(0).Name = "URL"
args5(0).Value = "file:///P:/Selektion/Zeitschriften/Einfügen.ods"
args5(1).Name = "FilterName"
args5(1).Value = "calc8"
args5(2).Name = "SelectionOnly"
args5(2).Value = true
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args5())
rem ----------------------------------------------------------------------
dim args6(2) as new com.sun.star.beans.PropertyValue
args6(0).Name = "URL"
args6(1).Name = "FilterName"
args6(1).Value = "calc8"
args6(2).Name = "SelectionOnly"
args6(2).Value = true
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args6())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$B$7"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())
end sub
Kann mir hier jemand weiterhelfen?
Abgesehen davon, gibt es irgendwo eine gute web-site auf der man eine übersichtliche Makrosammlung für Standardprolemchen findet?
Gruß,
fiz
Hallo Leute,
leider bin ich im programmieren nicht bewandert, habe aber des öfteren schon mit aufgezeichneten Makros gearbeitet.
Ich benötige nun ein Makro, das ein Formular unter einem Namen "X" abspeichert und das Formular ausdruckt.
Hierbei ist X ein String, der aus dem Feld S1 des Formulars ausgelesen wird.
Meine beste Lösung, die ich bisher habe, ist die, dass das Makro zunächst das Formular unter einem Dummy-namen in das gewünschte Verzeichnis (Pfad) speichere, (damit sich oO für den späteren Befehl "speichern unter" schon mal das richtige Verzeichnis "merkt"). Dann legt das Makro den String aus S1 in die Zwischenablage und führt den Befehl "Speichern unter" aus. Dann muß ich manuell "Einfügen" und das Speichern starten.
Also kurz gesagt:
Makro starten (mit einem Button)
String ins geöffnete Speichern-Dialogfenster pasten
- Speichern-Button drücken
Das macht drei Klicks wo ich eigentlich nur einen bräuchte. Außerdem ist das ganze so kompliziert, dass das Makro langsam ist.
Zum gruseln hier der unendlich komplizierte aufgezeichnete Code
[code]sub SelektionEnde
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(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ToPoint"
args1(0).Value = "$S$1"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args1())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:Copy", "", 0, Array())
rem ----------------------------------------------------------------------
dim args3(0) as new com.sun.star.beans.PropertyValue
args3(0).Name = "ToPoint"
args3(0).Value = "$E$8"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args3())
rem ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:PrintDefault", "", 0, Array())
rem ----------------------------------------------------------------------
dim args5(2) as new com.sun.star.beans.PropertyValue
args5(0).Name = "URL"
args5(0).Value = "file:///P:/Selektion/Zeitschriften/Einfügen.ods"
args5(1).Name = "FilterName"
args5(1).Value = "calc8"
args5(2).Name = "SelectionOnly"
args5(2).Value = true
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args5())
rem ----------------------------------------------------------------------
dim args6(2) as new com.sun.star.beans.PropertyValue
args6(0).Name = "URL"
args6(1).Name = "FilterName"
args6(1).Value = "calc8"
args6(2).Name = "SelectionOnly"
args6(2).Value = true
dispatcher.executeDispatch(document, ".uno:SaveAs", "", 0, args6())
rem ----------------------------------------------------------------------
dim args7(0) as new com.sun.star.beans.PropertyValue
args7(0).Name = "ToPoint"
args7(0).Value = "$B$7"
dispatcher.executeDispatch(document, ".uno:GoToCell", "", 0, args7())
end sub[/code]
Kann mir hier jemand weiterhelfen?
Abgesehen davon, gibt es irgendwo eine gute web-site auf der man eine übersichtliche Makrosammlung für Standardprolemchen findet?
Gruß,
fiz