Serienbriefe per Makro zu erstellen ist eigentlich nicht so schwer. Für diese Aufgabe
steht der
Service MailMerge zur Verfügung (ab SO 7.0 und OOo 1.1).
Mailmerge muss nur die passenden Parameter bestückt bekommen und das Quelldokument
muß mit der entsprechenden Datenbank verknüpft sein.
Folgende Parameter sind von Bedeutung
MailMerge.DataSourceName
Bekommt als Inhalt den Datenbanknamen der bei den Datenquellen hinterlegt ist. Achtung
die
genaue Schreibweise ist hier gefordert.
Beispiel Mailmerge.DataSourceName="MyDatenbank"
Mailmerge.DocumentUrl
Enthält das BasisDocument für den Serienbrief.
Diese Datei muß im URL-Format übergeben werden.
Beispiel: MailMerge.DocumentURL=ConvertToUrl("c:\myMail.sxw")
MailMerge.CommandType und MailMerge.Command
Diese Beiden stellen die eigentliche Verbindung zur Datenbank her.
Mit CommandType wird bestimmt wie auf die Datenbank zugegriffen wird.
0 = Tabelle
1 = Abfrage
2 = SQL-Abfrage
Mit Command wird dann die Tabelle, Abfrage oder SQL-Abfrage übergeben.
Beispiel
MailMerge.CommandType=1
MailMerge.Command="Abfrage1"
oder
MailMerge.CommandType=0
MailMerge.Command="Tabelle1"
MailMerge.OutputType
Legt das Ausgabeziel fest.
1=Drucker
2=Datei
Beispiel
MailMerge.OutputType=1
MailMerge.OutputUrl
Legt den Speicherpfad für die neuen Dokumente fest
Beispiel
MailMerge.OutputUrl=ConvertToUrl("C:\")
MailMerge.FileNameFromColumn und
MailMerge.Filenameprefix
Mit diesen Beiden kann man festlegen das der Dateiname aus einem Feld der Tabelle
für den
Dateinamen verwendet wird.
Diese Funktion ist aktiv wenn MailMerge.FileNameFromColumn true ist.
Der Vorgabewert ist false.
MailMerge.Filenameprefix wird das Feld festgelegt in dem der Dateiname steht.
Beispiel
MailMerge.FileNameFromColumn=True
MailMerge.Filenameprefix="Dateiname"
MailMerge.execute(MyProps())
Mit diesem Befehl wird die Funktion ausgeführt.
Beispiel
Dim MyProps as Object
MailMerge.execute(MyProps())
Das Ganze sieht dann komplett so aus:
MailMerge = createunoservice("com.sun.star.text.MailMerge")
MailMerge.DataSourceName="MyDatenbank"
MailMerge.DocumentURL=ConvertToUrl("c:\myMail.sxw")
MailMerge.CommandType=1
MailMerge.Command="Abfrage1"
MailMerge.OutputType=1
MailMerge.OutputUrl=Converttourl("C:\")
MailMerge.FileNameFromColumn=True
MailMerge.Filenameprefix="Dateiname"
Dim MyProps as Object
MailMerge.execute(MyProps())