🙏 Helfen Sie jetzt mit, unser LibreOffice Forum zu erhalten! 🙏
Mit Ihrer Spende sichern Sie den Fortbestand, den Ausbau und die laufenden Kosten dieses Forums. 🌱

🍀 Jeder Beitrag zählt – vielen Dank für Ihre Unterstützung!🍀

❤️ DANKE >> << DANKE ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

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

Base ermöglicht es Ihnen, Ihre Daten in einer Datenbank direkt mit LibreOffice zu bearbeiten.
Antworten
Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

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

Beitrag von Acco » 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):

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
Zuletzt geändert von Acco am Mo 17. Mär 2014, 18:15, insgesamt 1-mal geändert.
openSUSE Tumbleweed - LibreOffice 24.8.2.1

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

Re: per Makro mit MailMerge mehrere Kopien drucken

Beitrag von RobertG » Mo 17. Mär 2014, 18:00

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
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

Re: per Makro mit MailMerge mehrere Kopien drucken

Beitrag von Acco » Mo 17. Mär 2014, 18:13

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
openSUSE Tumbleweed - LibreOffice 24.8.2.1

RobertG
* LO-Experte *
Beiträge: 2884
Registriert: Sa 19. Mai 2012, 17:37
Kontaktdaten:

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

Beitrag von RobertG » Mo 17. Mär 2014, 20:08

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
https://de.libreoffice.org/get-help/documentation/
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=base_handbuch
https://www.familiegrosskopf.de/robert/index.php?&Inhalt=xml_formulare

Acco
Beiträge: 94
Registriert: Fr 31. Jan 2014, 16:41

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

Beitrag von Acco » Di 18. Mär 2014, 13:25

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
openSUSE Tumbleweed - LibreOffice 24.8.2.1

F3K Total
* LO-Experte *
Beiträge: 2501
Registriert: So 10. Apr 2011, 10:10

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

Beitrag von F3K Total » Di 18. Mär 2014, 18:31

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
Windows 11: AOO, LO Linux Mint: AOO, LO


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten