Mit einem Textverarbeitungsprogramm, wie Microsoft Word eines ist, lassen sich nicht nur kleine oder auch umfangreiche Texte erfassen, auch ein Serienbrief mit Anrede und anderen variablen Elementen ist kein Problem. Texte lassen sich automatisieren. Eine dieser möglichen Automatisierungen ist der so genannte Serienbrief. Das ist ein Brief, der mehr oder minder inhaltsgleich an mehrere Empfänger versendet werden soll. Das bedeutet, dass sich die einzelnen Briefe in den Adressdaten der Empfänger unterscheiden. Es können aber auch andere variable Textteile im eigentlichen Brieftext integriert werden, wie zum Beispiel eine adäquate Briefanrede. Hier sehen wir uns an, wie ein Serienbrief mit Anrede erstellt wird.
Neben dem Briefdokument wird eine Steuerdatei benötigt, in welcher Adressen und variable Textteile oder sonstige Informationen zur Steuerung der letztlichen Dokumentgenerierung gespeichert sind. Beide zusammen bilden die Grundlage für einen Serienbrief oder auch andere Dokumenttypen, die mehrfach, mit variablen Textteilen, erstellt werden sollen.
Die folgende Anleitung basiert auf Microsoft Word 2016. Die hier vorgestellten Arbeitsschritte sind auf andere Word-Versionen, wie zum Beispiel 365 übertragbar.
Aufgabenstellung: Serienbrief mit Anrede erstellen
Einen Serienbrief mit Anrede zu erstellen, wird Schritt für Schritt beschrieben. Ausgangspunkt ist ein Brief, der an den im Serienbrief zu ersetzenden Stellen Platzhalter beinhaltet. Diese sind dadurch gekennzeichnet, dass sie in spitzen Klammern notiert sind.
Der vorgestellte Beispielbrief ist sehr einfach gehalten. Als variable Inhalte haben wir die Adressen und die Briefanrede.
Die variablen Inhalte kommen aus der oben genannten Steuerdatei, die wir noch zu erstellen haben.
Wie in der Praxis üblich, gehen wir davon aus, dass die Adressen teilweise einfache Firmenadressen ohne konkreten Ansprechpartner sind, teilweise aber auch Ansprechpartner enthalten.
Das Problem bei derart gemischten Adressdaten besteht nun darin, unerwünschte Leerzeilen im Dokument zu vermeiden. Im konkreten Fall kann der Ansprechpartner fehlen. Enthält unsere Steuerdatei keine entsprechenden Daten, würde Word eine leere Zeile für diesen produzieren. Das gilt es zu vermeiden.
Zudem muss die Briefanrede entsprechen dem Ansprechpartner dynamisch angepasst werden.
Serienbrief mit Anrede in Word
Dokument und Steuerungsdatei verbinden
Die Serienbriefdatei existiert bereits. Es handelt sich um das oben dargestellte Dokument. Im Folgenden wird eine Excel-Datei als Steuerdatei genutzt. Diese kann manuell erstellt werden oder auch das Ergebnis einer Datenbankabfrage, also dynamisch erstellt, sein.
Die Excel-Datei sei wie folgt aufgebaut. Beispielinhalte sind hier bereits eingefügt.
Firma | Anrede | Vorname | Nachname | Strasse | PLZ | Ort | Geschlecht |
---|---|---|---|---|---|---|---|
XY Marketing GmbH | Dr. | Ignatz | Müller | Dorfstraße 2 | 49124 | Georgsmarienhütte | M |
RIta | Hauschild | Hinter den Linden 13 | 49080 | Osnabrück | W | ||
ABC Consult GmbH & Co. KG | Am Bahnhof 1 | 49080 | Osnabrück | ||||
3-Plus-Architekten | Meinert | Schlingmannsweg 3 | 49079 | Osnabrück | M |
Im ersten Schritt verbinden wir das Briefdokument mit der Excel-Steuerdatei. Dabei übernehmen wir einfach die Adressdaten, wie sie als Spalten in der Steuerdatei angelegt sind. Wir ignorieren dabei vorerst, ob die Felder für jeden Datensatz mit Inhalt gefüllt sind. Dazu betätigen wir die Schaltfläche „Empfänger auswählen“ im Register „Sendungen“.
Wir können nun eine Empfängerliste erstellen, auswählen oder auch aus Outlook-Kontakten wählen.
Im konkreten Beispiel verwenden wir unsere Excel-Steuerdatei. Nachdem wir diese als Datenquelle ausgewählt haben, wird die Schaltfläche „Seriendruckfeld einfügen“ aktiviert.
Naiver Implementierungsansatz
Markieren wir jetzt die textuellen Platzhalter unseres Briefes und wählen die entsprechenden Datenfelder über „Seriendruckfeld einfügen“ aus, so werden die Platzhalter durch so genannte Feldvariablen ersetzt, die mit der Datenquelle, unserer Excel-Steuerdatei, verknüpft sind. Das Bildschirmfoto auf der nächsten Seite zeigt die ausgeklappte Auswahlliste mit den Feldern, die in unserer Beispiel-Steuerdatei enthalten sind.
Die Empfängerdaten sind bereits durch datengebundene Feldvariablen ersetzt. Sie sind an den doppelten Anführungszeichen, wie zum Beispiel «Firma», zu erkennen. Diese Felder werden beim Seriendruck durch die Dateninhalte der Steuerdatei ersetzt.
Die Anordnung der Datenfelder entspricht der Anordnung, die sinnvoll ist, wenn alle Datenfelder auch tatsächlich Daten enthalten. Wir wissen jedoch, dass dies nicht der Fall ist.
Fehlen die Informationen für Vor- und Nachname, darf auch eine eventuell vorhandene Anrede nicht ausgegeben werden. Fehlen alle Angaben dieser Adresszeile, produziert Word eine Leerzeile.
Wir brauchen daher Kontrolle über die Ausgabe der Datenfelder beziehungsweise von Zeilenumbrüchen (und auch trennenden Leerzeichen).
Mit Bedingungen zum richtigen Text
Die Ausgabe von Feldvariablen die keine Dateninhalte besitzen, muss unterbunden werden. Häufig liest man in Internetforen, die Lösung dieser Problematik bestehe darin, die Felder der ersten und zweiten Adresszeile direkt hintereinander im Dokument anzuordnen, ohne Leerzeichen und ohne Zeilenumbruch. Das Adressfeld hätte dann nebenstehende Gestalt.
1 2 3 |
«Firma»«Anrede» «Vorname» «Nachname» «Strasse» «PLZ» «Ort» |
Mit Hilfe des Regel-Assistenten soll dann geprüft werden, ob ein Ansprechpartner vorhanden ist. Wenn ja, soll hinter der Firma ein Zeilenumbruch eingefügt werden, sonst nicht. In der Tat vermeidet dies auf einfache Weise einen unnötigen Zeilenumbruch.
Unsere Beispieldaten für den Serienbrief mit Anrede sind jedoch komplexer. Es ist leicht einzusehen, dass wir auch Leerzeichen beachten müssen. Seien Anrede und Nachname gegeben, der Vorname jedoch fehlend, so darf zwischen der Anrede und dem Vornamen lediglich ein trennendes Leerzeichen ausgegeben werden. Das kann das oben stehende Konstrukt nicht leisten.
Der Ansprechpartner kann, wenn er vorhanden ist, mit und ohne Anrede oder Vorname auftreten. Wenn Daten ausgegeben werden, weil die Datenfelder mit Inhalt gefüllt sind, sind auch entsprechende Leerzeichen einzufügen. Diese dürfen jedoch nicht statisch zwischen den Datenfeldern ausgegeben werden, weil so mehrere Leerzeichen hintereinander resultieren können, wenn kein Dateninhalt vorhanden ist. Die trennenden Leerzeichen sind also bedingte Leerzeichen. Sie hängen von der Bedingung ab, dass ein Datenfeldinhalt vorhanden ist.
Der Regel-Assistent hilft uns hierbei nicht. Wir müssen den Code manuell eingeben.
Bevor wir an die Implementierung gehen, überlegen wir uns die Regeln, nach denen wir das Adressfeld generieren wollen. Das sind so genannte Wenn-Dann-Regeln. Wir gehen dabei von gültigen Adressdatensätzen aus, bei denen mindestens die Firma, der Ansprechpartner oder sogar beide Angaben in den Steuerdaten passend vorhanden sind.
Um uns Klarheit über die zu implementierenden Regeln zu verschaffen, notieren wir sie vorerst rein schematisch:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
Wenn Nachname angegeben, dann Zeilenumbruch ausgeben Wenn Geschlecht = 'M' dann 'Herr ' ausgeben sonst Wenn Geschlecht = 'W' 'Frau ' ausgeben Wenn Anrede angegeben, dann Anrede mit folgendem Leerzeichen ausgeben Wenn Vorname angegeben, dann Vorname mit folgendem Leerzeichen ausgeben Nachname ausgeben Strasse ausgeben PLZ ausgeben Ort ausgeben |
Die obige Notation stellt einen Pseudocode dar. Tatsächlich ist die Syntax von Word alles andere als schön oder auch nur gut zu lesen. Code wird mit Formatierung (im Sinne von Platzierung der Elemente) gemischt.
Mittels der Tastenkombination ALT+F9 wird in die Codeansicht geschaltet. Mit CTRL+F9 kann ein neuer Ausdruck eingefügt werden. Unter macOS ist das die Tastenkombination CMD+F9. Das ist ein geschweiftes Klammerpaar, in welches der entsprechende Code eingetragen wird. Zum Einfügen von Datenfeldern kann weiterhin die Schaltfläche zum Einfügen der Serienbrieffelder genutzt werden. Sie werden jetzt als Code dargestellt.
Hinweis: Ein Ausdruck muss mit CTRL+F9 (CMD+F9) eingefügt werden. Die einfache Eingabe der geschweiften Klammern funktioniert nicht!
Mit { MERGEFIELD Feldname } wird ein Datenfeld namens Feldname aus der Steuerdatei angesprochen. IF prüft eine Bedingung. Die Syntax lautet: { IF Bedingung WAHR FALSCH }. Ist die Bedingung wahr, wird der WAHR-Teil ausgeführt, sonst der FALSCH-Teil. Um die Ausgabe eventuell überschüssiger Leerzeichen zu vermeiden, sind die Adressfelder im Code direkt aneinander gefügt. Ist ein Datenfeld mit Inhalt gefüllt, ist zusätzlich ein trennendes Leerzeichen auszugeben. Das besorgt die Option \f “ „. Man nennt das ein bedingtes Leerzeichen. Es können auch andere Zeichen als das Leerzeichen verwendet werden, wie zum Beispiel Bindestriche. Soll vor dem Datenfeldinhalt eine bedingte Ausgabe erfolgen, verwendet man die Option \b. Auch dieser muss dann die Angabe der bedingten Ausgabezeichenfolge folgen.
Möglicherweise trickreich ist die Ausgabe des Zeilenumbruchs nach dem Firmennamen. Er wird als „harter Zeilentrenner“ ausgegeben, wenn ein Nachname vorhanden ist, dieses Datenfeld also keine leere Zeichenkette ist.
Zu beachten ist auch, nicht einfach die Anrede „Frau“ ausgeben zu dürfen, wenn die betreffende Person kein Mann ist. Es ist nochmals zu prüfen! – Wer es nicht glaubt, mag das einfach testen.
Mit der Schaltfläche „Ergebnisvorschau“ im Register „Sendungen“ können wir uns vom Erfolg unserer Bemühungen überzeugen. Vorher sollten wir nicht vergessen, mittels ALT+F9 in die Normalansicht zurückzukehren. Mit dem Datensatzsteuerelement, neben der Ergebnisvorschau, können wir vorwärts und rückwärts durch die Datensätze der Steuerdatei schreiten.
Eine ganz analoge Logik verwenden wir nun noch für die Briefanrede. Ist ein Nachname angegeben, werden wir ihn verwenden. Andernfalls soll die allgemeine Grußformel „Sehr geehrte Damen und Herren“ eingesetzt werden.
Damit ist der Serienbrief fertig. Adressfeld und Briefanrede werden in Abhängigkeit der vorhandenen Adressdaten korrekt generiert.
Die weiteren Serienbrieffunktionen, wie beispielsweise das Filtern von Adressen sowie natürlich auch das Drucken und Speichern, bedürfen keiner weiteren Erläuterung.
Fazit
Ein Serienbrief mit Anrede und und weiteren variablen Inhalten ist datengetrieben einfach zu erstellen. Die Eingabe der Regeln ist zwar nicht besonders komfortabel. Dafür ist sie aber leicht zu implementieren, hat man die Logik einmal begriffen.
Die Abbildung logischer Entscheidungen ist etwas umständlich. Schöner wäre es, wenn uns Word die Möglichkeit böte, die Logik entsprechend gängiger Programmiersprachen zu implementieren:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
Wenn Nachname angegeben, dann Zeilenumbruch ausgeben Wenn Geschlecht = 'M' dann 'Herr ' ausgeben sonst 'Frau ' ausgeben Wenn Anrede angegeben, dann Anrede mit folgendem Leerzeichen ausgeben Wenn Vorname angegeben, dann Vorname mit folgendem Leerzeichen ausgeben Nachname ausgeben Strasse ausgeben PLZ ausgeben |
Leider geht das ohne VBA (Visual Basic for Applications) nicht. Dennoch führen in der Regel mehrere Wege nach Rom, die Logik einer Ausgabe zu formulieren. Jeder mag den wählen, der ihm am meisten behagt.
Karsten Brodmann
Weitere Informationen:
- Microsoft Support: Seriendruck mit Hilfe einer Excel-Tabelle
- weitere Infos zur Dokumentenautomation, z.B. mit Python: Dokumentenautomation mit PythonTeX