Hallo Hecky
Ich habe gerade dein Makro fertig.
Es benutzt einfach den Standard-Drucker.
Wenn du einen anderen Drucker nehmen willst, so kannst du natürlich vorher einen anderen Drucker in dem Makro festlegen.
Siehe :
http://www.starbasicfaq.de/Drucken.html#Zweig134
Hier ein Beispiel-Aufruf aus der Windows Shell: (musst du noch anpassen)
I:\Program Files (x86)\LibreOffice 3\program>soffice.exe macro:///standard.module3.print_Document("C:\Users\Nansen\Documents\Unbenannt3.ods")
(Du solltest den Code in ein Module in der Bibliothek "Standard" unter "Meine Makros" kopieren, damit er lauffähig ist.)
Bei Größeren Dokumenten kann es sein, dass die Wartezeit von jeweils einer Sekunde nach Laden und Drucken zu kurz ist.
das merkst du daran, wenn es einfach nicht gedruckt wird.
Ich habe das Makro mit einer Calc-Tabelle ausprobiert,
in der eine Makro-Funktion das aktuelle Datum mit Zeit in eine Celle schreibt,
dort funktioniert alles einwandfrei.
Falls deine Makro-Funktionen länger zum laufen brauchen,
solltest du die Wartezeit nach dem Laden großzügig so bemessen,
dass alle Berechnungen vor dem Drucken fertig sind.
Hier der Code:
Code: Alles auswählen
Sub print_Document(sPath As String)
dim sURL As String
Dim oPrintDocument As Object
dim args() as new com.sun.star.beans.PropertyValue
Dim myProp(1) as new com.sun.star.beans.PropertyValue
'Richtiges format umwandeln
On error goto errorhandler
sURL=converttourl(sPath)
myProp(0).name="MacroExecutionMode"
myProp(0).value = 4 'Makros ohne nachfragen ausführen
myProp(1).name = "Hidden"
myProp(1).value = True 'Versteckt öffnen
oPrintDocument = StarDesktop.loadComponentFromURL(sURL,"_blank",0,myProp())
'1 Sekunde warten bis geöffnet(bei größeren Dockumenten eventuell längeer einstellen)
Wait 1000
'Drucken
oPrintDocument.Print(args())
'1 Sekunde warten bis gedruckt(bei größeren Dockumenten eventuell längeer einstellen)
Wait 1000
'Schließen
oPrintDocument.close( True )
MsgBox "Das Dokument " & Chr(10) & sPath & Chr(10) & "Wurde erfolgreich gedruckt.",64,"ERFOLG"
Exit Sub
errorhandler:
MsgBox "Es ist ein Fehler aufgetreten.",48,"FEHLER"
end Sub
ich wünsche dir viel Erfolg.
Gruß Frieder