Document Automation, Teil 2:
Seriendruck mit Microsoft Word
Der zweite Teil meiner kleinen Serie über Dokument-Automation mit Microsoft Word zeigt, wie der Seriendruck von Microsoft Word funktioniert. Insofern ist er vielleicht für Applikationsentwickler nicht ganz so interessant, aber ich halte es doch für ganz sinnvoll, zu beschreiben, welche Funktionalitäten im doppelten Sinn des Wortes "serienmäßig" in Microsoft Word stecken.
Nun gibt es von Microsoft Word bekanntermaßen viele unterschiedliche Versionen auf dem Markt. Momentan dürften sich die Versionen Word 2000, 2003 und 2007 am häufigsten auf den Computern finden, vielleicht ist auch noch die eine oder andere Word 97-Installation in Betrieb. Leider sind die Menüpunkte, Symbolleisten und Dialogfenster zwischen den einzelnen Version recht unterschiedlich, auch wenn sich die Funktionalität zwischen den Version überhaupt nicht so stark unterscheidet. Ich verwende in dieser Serie Microsoft Word 2003 - quasi als Kompromiss zwischen der "neuen Welt" von Word 2007 und dem traditionellen Auftreten der Vorgängerversionen. Die beschriebenen Funktionen und Möglichkeiten gelten aber im Wesentlichen auch für alle anderen Word-Versionen ab Word 2000.
Die Komponenten des Seriendrucks
Im ersten Teil habe ich bereits kurz die Funktion des Seriendrucks beschrieben. Beim Seriendruck geht es im Wesentlichen um Folgendes: Auf der einen Seite existieren Daten, die in Form einer Seriendruck-Datenquelle zur Verfügung gestellt werden. Auf der anderen Serie steht eine Seriendruck-Dokumentvorlage, welche das Layout des zu erzeugenden Dokumentes vorgibt und die unveränderlichen Text- und grafischen Bestandteile enthält. Und beides soll zusammengeführt und das Ergebnis ausgegeben werden. Diese Ausgabe erfolgt im Fall von Word entweder direkt an einen Drucker, in ein neues Dokument hinein oder als e-Mail.
Die Seriendruck-Datenquelle
Damit so etwas wie Seriendruck überhaupt stattfinden kann, muss es erst einmal Daten geben, die zu verarbeiten sind. Beim klassischen Seriendruck wird es sich oft um Adressdaten handeln, aber im Prinzip kann jede Art von gespeicherten Information in einem Seriendruck verarbeitet werden. Zum Beispiel auch die Artikelliste einer kleinen Lagerverwaltung. Irgendwie muss Word nur Zugriff auf diese Daten erhalten - und das erfolgt über die Seriendruckdatenquelle.
Dabei kann es sich zum Beispiel um ein Text- oder Exceldokument, eine Access-Datenbank oder eine ODBC-Datenquelle handeln. Insbesondere Letzteres ist für Applikationsentwickler natürlich eine interessante Option, da man den Seriendruck dann direkt mit Daten aus einer Tabelle oder Sicht füttern kann, die sich z.B. in einer Datenbank befinden.
Die Seriendruck-Datenquelle stellt dazu Datenfelder zur Verfügung, die später als Seriendruckdatenfelder in die Dokumentvorlage eingefügt werden können. Bei einer Excel-Tabelle können das beispielsweise in der ersten Zeile der Tabelle gespeicherte Spaltenüberschriften sein, im Fall einer ODBC-Datenquelle werden die Datenbank-Feldnamen aus der angesprochenen Tabelle oder Datenbanksicht (View) als Seriendruckdatenfelder verwendet.
Die Seriendruck-Dokumentvorlage
Hinter der Seriendruck-Dokumentvorlage (engl.: document template, daher die Dateiendung .dot) verbirgt sich eine Datei, die für den Benutzer zunächst wie ein normales Word-Dokument aussieht - eben mit Ausnahme der veränderten Datei-Endung .dot. Dieses Template enthält den statischen Teil des zu erstellenden Seriendruckdokuments und legt seinen strukturellen Aufbau fest. Außerdem ist in der Dokumentvorlage die Information über die zu verwendete Seriendruck-Datenquelle gespeichert.
Der erste Schritt für den Seriendruck sollte sein, ein "normales" Word-Dokument zu nehmen und es als Dokumentvorlage abzuspeichern. Das Dokument darf dabei selbstverständlich schon Text und Grafiken enthalten und vollständig strukturiert sein.
Als nächstes muss aus der Dokumentvorlage eine Seriendruck-Dokumentvorlage werden. Microsoft Word bietet für alle notwendigen Schritte auch einen Assistenten an, aber ich benutze üblicherweise lieber den Weg zu Fuß. Und der führt am schnellsten und einfachsten über die Seriendruck-Symbolleiste. Diese kann man, falls sie nicht ohnehin schon angezeigt wird, durch einen Klick mit der rechten Maustaste und Auswahl der entsprechenden Symbolleiste aus dem Menü einblenden.
Gleich das erste (ganz linke) Symbol dieser Symbolleiste ermöglicht die Umschaltung des Hauptdokumenten-Typs von Normales Word-Dokument auf Briefe:
Diese Option ermöglich den klassischen Seriendruck, bei dem das Ergebnis als Dokument ausgegeben wird. Die anderen Optionen bei der Dokumenttyp-Auswahl ignoriere ich an dieser Stelle, da sie für das gezeigte Beispiel keine Relevanz haben.
Vorbereiten der Dokumentvorlage für den Seriendruck
Auswahl der Seriendruck-Datenquelle
Im gezeigten Beispiel habe ich an dieser Stelle also eine Datenquelle für meinen Seriendruck - eine Excel-Datei - und eine Seriendruck-Dokumentvorlage. Damit es zum Seriendruck kommen kann, muss nun beides noch miteinander verknüpft werden. Durch die Umschaltung auf den Dokumenttyp Brief wurde in der Seriendruck-Symbolleiste der Schaltknopf zur Auswahl der Seriendruck-Datenquelle aktiviert, über den man genau diese Verknüpfung vornehmen kann.
Im Fall der Auswahl von Excel als Datenquelle muss im nächsten Schritt noch das Arbeitsblatt ausgewählt werden, welches die zu verarbeitenden Daten enthält. Zusätzlich kann man festlegen, dass die erste Zeile der Excel-Tabelle die Namen der Seriendruck-Datenfelder enthält.
Einfügen der Seriendruck-Datenfelder
Sobald die Dokumentvorlage die Information über eine gültige - also erreichbare - Datenquelle enthält, können Datenfelder aus dieser Datenquelle als Seriendruck-Datenfelder in der Vorlage verwendet werden. Die Auswahl dieser Datenfelder kann ebenfalls über die Seriendruck-Symbolleiste erfolgen:
Hier noch ein kleiner Tipp: In den Versionen bis Word 2003 gab es in der Seriendruck-Symbolleiste eine Dropdown-Liste, aus der die Datenfelder direkt ausgewählt werden konnten. In den aktuellen Versionen fehlt diese Liste, statt dessen müssen die Felder aus einem Dialogfenster ausgewählt werden. Leider muss man das Dialogfenster schließen, wenn man innerhalb des Dokuments an eine andere Stelle wechseln möchte, was beim Einfügen der Datenfelder ins Dokument naturgemäß häufiger der Fall sein wird. Warum auch immer Microsoft diese Änderung vorgenommen hat: Man kann die Liste manuell der Symbolleiste wieder hinzufügen. Der rechte Mausklick in die Symbolleiste erlaubt die Auswahl der Option Anpassen. In dem sich öffnenden Dialogfenster kann man in der Registerkarte Befehle die Kategorie Seriendruck auswählen und findet dort den Befehl Seriendruckfeld einfügen.
Diesen Eintrag kann man nun durch einfaches Drag'n Drop auf die Symbolleiste ziehen und dort an der gewünschten Stelle einfügen. Das macht das Einfügen der Seriendruckfelder in Folge viel einfacher. Die Dokumentvorlage sieht nach dem Einfügen der Datenfelder etwa so aus:
An dieser Stelle betrachte ich einmal die eingefügten Seriendruck-Datenfelder genauer. Es handelt sich dabei nicht um einfachen Text, sondern tatsächlich um Datenfelder, die - anders als normaler Text - auch über das Objektmodell von Microsoft Word direkt angesprochen werden können. Das ist für die Steuerung des Seriendruck aus einer Applikation über COM sehr nützlich. Lässt man sich durch Klick mit der rechten Maustaste und Auswahl des Menüpunktes Feldfunktionen ein / aus die hinter dem Feld stehende Funktion anzeigen, wird zum Beispiel aus dem Seriendruckfeld «Bezeichnung» die Funktion { MERGEFIELD Bezeichnung }.
Bedingungsfelder
Eine besondere Bedeutung haben für den Seriendruck Bedingungsfelder, welche ebenfalls über die Seriendruck-Symbolleiste eingefügt werden können. Diese Felder können eingesetzt werden, um vom Benutzer während des Seriendrucks Eingaben abzufragen, bestimmte Datenfelder oder komplette Datensätze nur unter bestimmten Bedingungen zu verarbeiten und von einem Datensatz zum nächsten zu wechseln.
In einer normalen Seriendruckvorlage sind eigentlich keine Bedingungsfelder notwendig. Aber für die spätere Steuerung des Seriendrucks aus einer Applikation ist zumindest das Bedingungsfeld «Nächster Datensatz» (Feldfunktion: { NEXT }) sehr nützlich, um der Applikation anzuzeigen, an welcher Stelle der Dokumentvorlage von einem Datensatz zum nächsten gewechselt werden soll.
Starten des Seriendrucks
Nach dem Einfügen der Datenfelder steht dem Seriendruck nun nichts mehr im Wege. Eine praktische Funktion, um sich einen Überblick darüber zu verschaffen, ob das Layout der Dokumentvorlage sich mit den zu verarbeitenden Daten verträgt ist die Seriendruck-Vorschau, die über den entsprechenden Knopf in der Seriendruck-Symbolleiste aktiviert werden kann.
Zeigt sich die Vorlage auch optisch reif für den Seriendruck, kann's eigentlich losgehen. Als Ziel für den Seriendruck bietet Word wie bereits erwähnt mehrere Alternativen an:
- Ausgabe in ein neues Dokument
- Ausgabe an einen Drucker
- Ausgabe per e-Mail
- Ausgabe per Fax
Die Ausgabe an ein neues Dokument und an einen Drucker unterscheiden sich funktional eigentlich nicht. Im letzteren Fall wird lediglich das Seriendruckergebnis ohne Möglichkeit der Voransicht direkt an einen Drucker gesendet - in vielen Fällen sicher nicht die beste Wahl, da man möglicherweise noch Anpassungen am fertigen Seriendruckdokuemnt vornehmen möchte.
Die Ausgabe per Mail ermöglich den Versand von e-Mails direkt aus Word. Die Mailadresse des bzw. der Empfänger kann direkt aus der Seriendruck-Datenquelle entnommen werden. Auf diese Weise gelingt beispielsweise der Versand von personalisierten Newslettern, bei denen die Empfänger direkt angesprochen werden. Außerdem umgeht man mit dieser Variante des Mailversandes bei großen Mailverteilern das Problem, das Mails mit zu vielen Adresssaten AN-, CC- oder BCC-Feld beim Empfänger oft als Spam kategorisiert werden. Da Word die Mails als einzelne Mails an jeden Empfänger verschickt, kann das hier nicht passieren.
Ergebnis des Seriendrucks
Der Seriendruck selbst sollte nun eigentlich kein Problem mehr darstellen, aber für die in meinem Beispiel gezeigte Dokumentvorlage ist das Ergebnis nicht ganz so ausgefallen wie erhofft. Irgendwie sind, statt wie im Layout angedacht als einzelne Zeilen einer Tabelle zu erscheinen, die Datensätze aus der Seriendruck-Datenquelle jeweils auf einer separaten A4-Seite ausgegeben worden. Tatsächlich fügt Word beim normalen Seriendruck hinter jedem Datensatz einen Abschnittswechsel (Nächste Seite) ein, der das geplante Layout der Vorlage in der Tat durcheinander wirft.
In der Abbildung habe ich das Dokument zur besseren Sichbarkeit des Effektes einmal in Normal- anstatt der Layoutansicht dargestellt.
Um nun derlei Probleme zu beheben, kommt man um etwas Programmierung nicht herum. Aber mit ein paar Kenntnissen in VBA-Programmierung kann man Word sehr gut als Report-Generator oder Hilfsmittel zur Document Automation erweitern. Denn es steckt mehr hinter dem Seriendruck als die Fähigkeit, Adressetiketten zu beschriften.
In Teil 3 beschreibe ich, wie man den Word-Seriendruck per Visual Basic oder VBA aus einer Applikation heraus steuern und seine Funktionalität erweitern kann.
