Seite 1 von 1
Voreinstellungen des Seriendruckdialoges ändern
Verfasst: Di, 28.08.2007 08:31
von Christiana
Hallo,
ich möchte per Makro einen Serienbrief erstellen. Da manchmal nur einzelne Datensätze ausgewählt werden sollen, möchte ich dazu den Seriendruck-Dialog verwenden. Leider konnte ich den Code dazu nur mit dem Makro-Rekorder aufzeichnen:
Code: Alles auswählen
sub Seriendruck
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 ----------------------------------------------------------------------
dispatcher.executeDispatch(document, ".uno:MergeDialog", "", 0, Array())
end sub
Wie kann man die Voreinstellungen des Seriendruck-Dialoges per Code ändern? Die Ausgabe soll in eine Datei erfolgen. Außerdem würde ich gern den Pfad per Code hinterlegen.
Weiß jemand wie man so etwas macht?
Vielen Dank im Voraus!
Christiana
Re: Voreinstellungen des Seriendruckdialoges ändern
Verfasst: Di, 28.08.2007 16:20
von komma4
Können kannst Du schon - nur sind die DISPATCHER-calls schlecht bis gar nicht dokumentiert.
Wärst Du auch in der Lage Basic u. APIs zu nehmen? Im englischen Forum, section CodeSnippets und MacroProgramming, gibt's eine Reihe von Beispielen....
Re: Voreinstellungen des Seriendruckdialoges ändern
Verfasst: Mi, 29.08.2007 08:35
von Christiana
Hallo Winfried,
also, ich habe mir das Buch von Thomas Krumbein „Makros in OOo 2.0“ besorgt. Es hat mir schon sehr geholfen. Dennoch stoße ich mit meinen Basic-Kenntnissen oft an meine Grenzen und dann nehme ich, auch wenn sehr ungern, den Makro-Rekorder zu Hilfe. Der Umgang mit der API fällt mir noch sehr schwer. Leider lassen meine Englisch-Kenntnisse auch zu wünschen übrig. Trotzdem werde ich mich im englischen Forum auf die Suche begeben. Danke für den Tipp!
mfg
Christiana
Re: Voreinstellungen des Seriendruckdialoges ändern
Verfasst: Mi, 29.08.2007 14:43
von Christiana
Mit diesem Code kann ich einen Serienbrief erstellen.
Code: Alles auswählen
Sub Serienbrief
MailMerge = createunoservice("com.sun.star.text.MailMerge")
MailMerge.DataSourceName="Datenbankname"
MailMerge.DocumentURL=ConvertToUrl("H:\test.odt")
MailMerge.CommandType=0
MailMerge.Command="public.myempfaenger"
MailMerge.OutputType=2
MailMerge.OutputUrl=Converttourl("H:\test\TMP")
MailMerge.FileNameFromColumn=True
MailMerge.Filenameprefix="name"
Dim MyProps()
MailMerge.execute(MyProps())
End Sub
Um einzelne Empfänger auszuwählen, könnte ich das Datenquellenfenster benutzen. (Leider wieder nur mit Makro-Rekorder erstellt.)
Code: Alles auswählen
sub Datenquellenfenster
document = ThisComponent.CurrentController.Frame
dispatcher = createUnoService("com.sun.star.frame.DispatchHelper")
dim args1(0) as new com.sun.star.beans.PropertyValue
args1(0).Name = "ViewDataSourceBrowser"
args1(0).Value = true
dispatcher.executeDispatch(document, ".uno:ViewDataSourceBrowser", "", 0, args1())
end sub
Aber wie lese ich die Selektionen des Datenquellenfensters aus und wie übergebe ich diese an den Serienbrief?
Ich hoffe, ich habe mich verständlich ausgedrückt. Es wäre schön, wenn mir jemand weiterhelfen könnte.
mfg
Christiana
Re: Voreinstellungen des Seriendruckdialoges ändern
Verfasst: Mi, 29.08.2007 15:21
von komma4
Christina,
wenn ich das richtig sehe hat das Problem JohnV
hier gelöst.
War es das?
Re: Voreinstellungen des Seriendruckdialoges ändern
Verfasst: Do, 30.08.2007 12:11
von Christiana
Hallo Winfried,
erst einmal vielen Dank für Deine Hilfe beim Suchen. Der Code von JohnV ist sehr interessant, aber leider nicht genau dass, was ich suche. Wenn ich es richtig verstehe, wird genau ein Datensatz im Datenquellenfenster markiert und anschließend werden diese Daten des markierten Datensatzes in die Felder des Dokumentes geschrieben. Das entspricht dem Button: „Daten in Felder“ des Datenquellenfensters. Ich denke, es ist ein Code, den man für viele andere Anwendungen benutzen kann, den ich auf jeden Fall in meine Makrosammlung aufnehmen werde.
Im Moment aber, brauche ich für mein Programm etwas anderes. Im Datenquellenfenster sollen auch mehrere oder alle Datensätze ausgewählt werden können und daraus soll dann der Serienbrief erstellt werden.
Im weiteren Verlauf wird dann jedes einzelne Dokument des hinterlegten Pfades geöffnet und zu jedem einzelnen Empfänger weitere Daten aus der Datenbank hinzugefügt. Dieser Teil funktioniert bereits. Das konnte ich mit Hilfe des wirklich guten Buches von Thomas Krumbein lösen.
Beim ersten Versuch habe ich mit Hilfe des Makro-Rekorders den Seriendruck-Dialog aufgerufen (siehe oben), denn dieser macht ja genau dass, was ich möchte. Aber es ist noch nicht komfortabel genug, denn
1. erscheint zunächst der Dialog mit der Frage, ob der Seriendruck aus diesem Dokument erstellt werden soll. Diese muss auf jeden Fall mit OK beantwortet werden.
2. steht die Ausgabe standardmäßig auf Drucker und nicht auf Datei. Das ist in diesem Fall sehr fehlerträchtig und
3. wenn zuvor ein anderer Serienbrief erstellt wurde, der in einem anderen Verzeichnis abgelegt wurde, stimmt der eingestellte Pfad nicht mehr. Deshalb möchte ich den Pfad mit dem Code übergeben.
Da ich nicht weiß, wie ich auf diesen Seriendruck-Dialog zugreifen kann, um diese Einstellungen per Basic-Code vornehmen zu können, überlegte ich mir die Variante mit dem Datenquellenfenster zur Selektion der einzelnen Datensätze. Aber leider weiß ich da auch nicht weiter.
mfg
Christiana
Re: Voreinstellungen des Seriendruckdialoges ändern
Verfasst: Di, 11.09.2007 09:10
von Christiana
Hallo Profis,
weiß denn wirklich niemand wie man auf diesen Seriendruck-Dialog per Basic-Code zugreifen kann, die Voreinstellungen von Drucker auf Datei umstellen und den Pfad per Basic-Code hinterlegen kann? Ich brauche es wirklich dringend und kann mir vorstellen, dass es doch auch für andere interessant wäre!
Christiana
Seriendruck.jpg
Re: Voreinstellungen des Seriendruckdialoges ändern
Verfasst: Mi, 26.09.2007 07:21
von Christiana
Hallo Christina,
leider habe ich bisher noch keine Lösung gefunden. Ich weiß einfach nicht wie ich an diesen Seriendruckdialog herankomme.
So sind wir nun schon zwei mit diesem Problem. Vielleicht kann uns ja doch noch jemand aus dem Forum helfen.
Christiana
Re: Voreinstellungen des Seriendruckdialoges ändern
Verfasst: Mi, 26.09.2007 08:43
von komma4
Habt ihr beiden
dieses Posting gelesen?
Ohne es eingehend geprüft oder getestet zu haben scheint die unten stehende Funktion
RowSelectionInDataBrowser(oDoc,DBname,tableName) eine Möglichkeit aufzuzeigen....?
Bei meinem Kunden ist gerade die Hölle los, deshalb habe ich leider momentan keine Zeit mir das selbst mal durchzuspielen.
Quelle wohl im Projekt
Viel Erfolg.
Re: Voreinstellungen des Seriendruckdialoges ändern
Verfasst: Mi, 26.09.2007 09:19
von moritz
Nur leider klappt das eben bis jetzt auch nicht perfekt, weil mir immer noch wichtige Teile fehlen.
Moritz
Re: Voreinstellungen des Seriendruckdialoges ändern
Verfasst: Do, 27.09.2007 07:46
von Christiana
Hallo Christina,
vielen Dank für das Posten deiner Lösung. Leider reicht dies in meinem Fall noch nicht aus, da ich auch nur einzelne Datensätze auswählen können muss. Auch Mehrfachselektion muss möglich sein. Deshalb habe ich den Code hinsichtlich Tabellen und Abfragen auch noch nicht ausgetestet. Zur Zeit arbeite ich mich für ein anderes Projekt in Base und Formulare ein. Ich hoffe, dass ich dann auch hierfür eine Lösung finden werde. Spontan schiesst mir jetzt ein Gedanke durch den Kopf: Parameterabfrage. Ich glaube Christina, du hast mich doch noch auf die richtige Fährte gebracht. Mein anderes Projekt hat jetzt leider Vorrang, aber sobald ich ein bisschen Luft habe, werde ich es testen. Dann werde ich mir auch den Code von Moritz mal näher anschauen.
Also nochmals vielen Dank!
Christiana
Re: Voreinstellungen des Seriendruckdialoges ändern
Verfasst: Do, 27.09.2007 08:26
von moritz
Vielleicht hilft Dir mein Lösungsansatz weiter. Ich schreibe zwar (fast) keine Serienbriefe, arbeite für Briefe, Faxe und Kurzbriefe aber nach dem gleichen Prinzip:
Vorlagen für Faxe, Briefe und Kurzbriefe mit Sereindruckfeldern, verbunden mit einer Abfrage- Tabelle
MySQL- Adressdatenbank, in OO angemeldet, Abfrage- Tabelle
per Makro
1. Erstellung eines neuen Briefes / Faxes
2. Eingabe der zu suchenden Familiennamen (max ca. 8 Stück, je nach String- Länge)
3. Abfrage über SQL und Eintrag der gefundenden Namen in eine Listbox
4. Auswahl der tatsächlich benötigten Namen (wegen der vielen Schneiders und Müllers), Mehrfachauswahl möglich
5. Eintrag der neuen SQL- Abfrage in die OO- Datenabfrage
6. Anzeige der Adressdatenquelle
7. Eintrag der Betreffzeile aus einer anderen Writer- Datei
8. manuelle Auswahl der Adresszeile im Datenbeamer
9. Eintrag der Adressdaten in die Brieffelder
10. Fertigstellung des Brieftextes
11. Ausdruck
Wo ich noch Probleme habe:
bei einem einzelnen Datensatz wird die Listbox 3. und 4. eingespart und gleich das Abfrageergebnis im Beamer angezeigt. In diesem Fall müßten die Brieffelder gleich automatisch ausgefüllt werden, was 1. leider oft nicht klappt (ist aber sicher lösbar) und 2. Felder mit Bedingung nicht aktualisiert werden.
Moritz