Seite 1 von 1

[gelöst] per Makro mit MailMerge mehrere Kopien drucken

Verfasst: Mo 17. Mär 2014, 16:06
von Acco
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):

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
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

Re: per Makro mit MailMerge mehrere Kopien drucken

Verfasst: Mo 17. Mär 2014, 18:00
von RobertG
Hallo Acco,

Du hast als Definition
dim printProp(1) AS NEW com.sun.star.beans.PropertyValue
stehen.
Ich finde die zweite Variable nicht. Du definierst im Text printProp(0).

Ich probiere bei Makros auch erst einmal viel herum, aber wenn ein Array bereits auf zwei Variablen angelegt ist, dann kann es ja eventuell sein, dass die PrintOptions nicht richtig weiter gegeben werden können.

Gruß

Robert

Re: per Makro mit MailMerge mehrere Kopien drucken

Verfasst: Mo 17. Mär 2014, 18:13
von Acco
Hallo Robert,
RobertG hat geschrieben:aber wenn ein Array bereits auf zwei Variablen angelegt ist, dann kann es ja eventuell sein, dass die PrintOptions nicht richtig weiter gegeben werden können.
Danke, das war die Ursache.

Gruß
acco

Re: [gelöst] per Makro mit MailMerge mehrere Kopien drucken

Verfasst: Mo 17. Mär 2014, 20:08
von RobertG
Hallo Acco,

hast Du etwas dagegen einzuwenden, wenn ich den Code für eine Beispieldatei des Handbuches (nächste Version für LO 4.3) nahezu 1:1 übernehme? Nicht dass Du nachher erstaunt guckst und sagst: "Irgendwoher kenne ich doch die Formulierungen?" Ich kann Dich auch gerne mit aufführen, bloß bräuchte ich dann einen Realnamen - könnten wir ja per Mail klären.

Gruß

Robert

Re: [gelöst] per Makro mit MailMerge mehrere Kopien drucken

Verfasst: Di 18. Mär 2014, 13:25
von Acco
Hallo Robert,

da habe ich gar nichts dagegen, aber mich zu erwähnen ist nicht nötig, denn nicht alles ist "auf meinem Mist gewachsen".

Die - Dank Deines Hinweises - funktionierende Code-Sequenz lautet:

Code: Alles auswählen

	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 = "Wait"
    		printProp(0).Value = True
    		printProp(1).Name = "CopyCount"
    		printProp(1).Value = 2     ' Kopienzahl
    		oMailMerge.PrintOptions = printProp()
		END IF
Die printProp Angaben habe ich u.a. vom "Dannenhöfer".
http://www.dannenhoefer.de/faqstarbasic ... l#Zweig158

Gern schicke ich Dir auch die (noch nicht ganz fertiggestellte) Kursverwaltung, denn da ist das komplette Makro drin. Und auch ein paar
Formulierungen, die Dir bekannt vorkommen.
Da brauche ich nur eine Mailadresse per PN.

Einen schönen Tag

Gruß
acco

Re: [gelöst] per Makro mit MailMerge mehrere Kopien drucken

Verfasst: Di 18. Mär 2014, 18:31
von F3K Total
Hallo,
auch ich hatte gestern versucht, das Problem zu lösen, es ist mir nicht gelungen, daher dieser Hinweis:
Mit AOO 4.0.1 funtionieren die

Code: Alles auswählen

.PrintOptions
nicht. In LO kein Problem
Gruß R