[gelöst] per Makro mit MailMerge mehrere Kopien drucken
Verfasst: Mo 17. Mär 2014, 16:06
Guten Tag,
ich drucke aus einem Base Formular mittels Makro Serienbriefe. Der Druck läuft im Hintergrund, soweit funktioniert alles.
Nun möchte ich manchmal auch Kopien der Briefe ausdrucken und da klemmt es bei mir.
LibreOffice 4.1.5.3. openSUSE 13.1
Hier das Makro (Auszug):
Der Bereich "Kopien drucken?" mit printProp(0) funktioniert nicht. Der Drucker druckt dann entweder gar nicht, oder nur eine halbe Seite und bleibt dann stecken.
Es funktioniert statt der "printProps" den Befehl "oMailMerge.execute(aProps())" nach der Frage "Kopien drucken?" nochmal ausführen zu lassen, aber das ist einerseits nicht schön, andererseits lerne ich nichts dabei. Und vielleicht werden auch mal 2 Kopien gebraucht.
Kann mir jemand weiterhelfen?
Gruß
acco
ich drucke aus einem Base Formular mittels Makro Serienbriefe. Der Druck läuft im Hintergrund, soweit funktioniert alles.
Nun möchte ich manchmal auch Kopien der Briefe ausdrucken und da klemmt es bei mir.
LibreOffice 4.1.5.3. openSUSE 13.1
Hier das Makro (Auszug):
Code: Alles auswählen
SUB Brief_zusammenstellen
DIM aProps()
dim printProp(1) AS NEW com.sun.star.beans.PropertyValue
DIM oMailMerge AS OBJECT
DIM oDoc AS OBJECT
DIM sDBName
DIM sURL
DIM sDatei
DIM sFrage AS STRING
DIM sSQL_delRech AS STRING
DIM oResultSet AS OBJECT
oMailMerge = createunoservice("com.sun.star.text.MailMerge")
'Datenbankname ermitteln
Globalscope.BasicLibraries.loadLibrary("Tools")
sDBName = Tools.Strings.GetFileNameWithoutExtension(thisDatabaseDocument.url, "/")
oMailMerge.DataSourceName = sDBName
' Vezeichnis und Name der zu druckenden Datei zusammensetzen
' Datei muß im selben Verzeichnis sein, wie die Datenbank
' RechURL kommt als globale Variable aus SUB "Serienbriefdruck"
sURL = RechURL
sURL = DirectoryNameOutOfPath(sURL,"/")
sDatei = sURL & "/" & sBriefauswahl
oMailMerge.DocumentURL = sDatei ' Linux und Windows muß funktionieren
' Abfrage = "1", Tabelle = "0", direkte SQL-Eingabe = "2" .
oMailMerge.CommandType = 1
oMailMerge.Command = "Ab_RechDruck"
oMailMerge.Filter = """KAuswahl"" = " + TRUE + " AND ""RechDruck"" is null"
' eine Datei für jede Adresse = "2", Ausgabe an Drucker = "1"
sFrage = "Die Serienbriefe sind zusammengestellt" + chr(13)+_
"Sollen sie jetzt ausgedruckt werden?" + chr(13)+_
" " + chr(13)+_
"Falls nein, können Sie im nächsten" + chr(13)+_
"Schritt gespeichert werden!"
' falls Ja geklickt, Serienbriefe an Drucker senden
IF MsgBox (sFrage, 292, "Meldung") = 6 THEN ' 6 = ja
oMailMerge.OutputType = 1
IF MsgBox ("KOPIEN DRUCKEN?", 292, "Meldung") = 6 THEN ' 6 = ja
printProp(0).Name = "CopyCount"
printProp(0).Value = 2 ' Kopienzahl
oMailMerge.PrintOptions = printProp()
END IF
.... hier anderer Code zum Speichern der Briefe .....
oMailMerge.OutputUrl = sURL ' Linux und Windows muß funktionieren
oMailMerge.FileNameFromColumn = True
' wie soll die jeweilige Datei heißen
oMailMerge.Filenameprefix = "TName"
oMailMerge.execute(aProps())
END SUB
Es funktioniert statt der "printProps" den Befehl "oMailMerge.execute(aProps())" nach der Frage "Kopien drucken?" nochmal ausführen zu lassen, aber das ist einerseits nicht schön, andererseits lerne ich nichts dabei. Und vielleicht werden auch mal 2 Kopien gebraucht.
Kann mir jemand weiterhelfen?
Gruß
acco