So erstellen Sie einen automatisierten Serienbrief mit Bildern in LibreOffice Writer

Sie können in LibreOffice Writer problemlos einen Serienbrief für Namen, Adressen, Datum und andere Textfelder erstellen. Sobald jedoch jeder Empfänger ein anderes Foto, eine andere Unterschrift, ein anderes Produktbild, einen anderen QR-Code oder ein anderes Abzeichen benötigt, wird der einfache Workflow kompliziert. Der Grund dafür ist wichtig: Die dokumentierten Serienbrieffelder in Writer sind Datenbankfelder, die als Textplatzhalter verwendet werden. LibreOffice unterstützt zwar auch eingebettete und verknüpfte Grafiken, die aktuelle Hilfe dokumentiert jedoch kein natives „Serienbrief-Bildfeld“, das automatisch ein Bild aus einer Dateipfadspalte für jeden Datensatz ersetzt.

Damit bleiben zwei praktische Möglichkeiten. Wenn alle zusammengeführten Dokumente dasselbe Logo oder Hintergrundbild verwenden, nutzen Sie die normale Serienbrieffunktion von Writer und fixieren Sie das Bild in der Vorlage. Muss sich das Bild für jede Zeile ändern, ist es ratsamer, die Text- und Bilddaten in Calc zu speichern, ein benanntes Grafikobjekt in der Writer-Vorlage zu reservieren und den Seriendruck mit einem LibreOffice Basic-Makro zu automatisieren. Diese Anleitung beschreibt die zweite Vorgehensweise.

Die Anweisungen orientieren sich an der LibreOffice 26.2-Dokumentation (verfügbar ab 2026). Menüs können in anderen Versionen oder unter macOS geringfügig abweichen. Laut der aktuellen Writer-Anleitung von LibreOffice lassen sich Bilder einbetten oder verlinken. Die UNO-API stellt Writer-Grafikobjekte bereit XTextGraphicObjectsSupplierund ermöglicht die automatisierte Einbindung von Grafiken über externe URLs. Dadurch ist ein Workflow mit Bildern pro Datensatz möglich, obwohl der Standard-Serienbriefassistent kein separates Bildfeld dafür bereitstellt.

Wählen Sie den richtigen Arbeitsablauf, bevor Sie beginnen.

ErfordernisBeste VorgehensweiseHauptabwägung
Auf jedem Buchstaben das gleiche Logo oder Foto.Standard Writer SerienbriefSimpel, aber das Bild ändert sich durch die Aufzeichnung nie.
Für jeden Empfänger ein anderes BildWriter-Vorlage + Calc + Basic/UNO-AutomatisierungMehr Aufwand beim Einrichten, aber vorhersehbare Kontrolle über das Bild.
Die Datenbank speichert das Bild selbst und nicht einen Pfad.Datenbank-/Formular-Workflow oder benutzerdefinierter UNO-CodeBesser geeignet für verwaltete Datenbanken, aber ressourcenintensiver als eine tabellenkalkulationsbasierte Zusammenführung.
Hunderte oder Tausende von Dokumenten in unbeaufsichtigten StapelnMakro oder externes UNO-SkriptErfordert Tests, Protokollierung und die Einhaltung der Dateipfadrichtlinien.

Wenn Sie lediglich ein festes Firmenlogo verwenden möchten, können Sie hier aufhören und den normalen Workflow für LibreOffice-Formularbriefe nutzen . Der Rest dieses Artikels behandelt variable Bilder.

Schritt 1: Bereiten Sie eine saubere Calc-Datenquelle vor

Erstellen Sie ein Calc-Arbeitsblatt mit einer Kopfzeile und einem Datensatz pro Zeile. Bildreferenzen sollten in einer eigenen Spalte gespeichert werden. Ein praktisches Layout sieht folgendermaßen aus CustomerID: , FirstName, LastName, Email, ImagePath, und OutputName.

LibreOffice Calc-Tabellenblatt mit Kundenfeldern, Bildpfaden und Ausgabenamen für einen automatisierten Writer-Seriendruck.
Bitte verwenden Sie pro Zeile einen Bildpfad und einen Ausgabedateinamen, damit die Automatisierung jeden Datensatz ohne Rätselraten auflösen kann.

Verwenden Sie beim Erstellen und Testen des Merges absolute Pfade. Diese sind zwar weniger portabel, beseitigen aber Mehrdeutigkeiten. Beispielsweise ist die Diagnose C:\MailMerge\Imageslice.jpgunter Windows oder /home/user/mailmerge/images/alice.jpgLinux einfacher als bei einem relativen Pfad, dessen Basisverzeichnis sich je nach Art des Öffnens des Dokuments ändert.

Verwenden Sie in derselben Produktionsdatei keine gemischten Pfadformate aus Windows und Linux. Die Beispiele in der Abbildung zeigen lediglich den Datentyp der Spalte. Ihre eigentliche Datenquelle sollte Pfade verwenden, die auf dem Rechner, auf dem die Zusammenführung ausgeführt wird, gültig sind.

Eine gut OutputNamestrukturierte Spalte verhindert zudem Dateinamenskonflikte. Verwenden Sie lieber eine eindeutige ID oder einen anonymisierten Namen anstelle einer E-Mail-Adresse oder eines beliebigen Freitexts. Falls derselbe Wert zweimal vorkommt, legen Sie im Voraus fest, ob das Makro den vorhandenen Wert überschreiben, ein Suffix anhängen oder fehlschlagen soll.

Schritt 2: Bestätigen Sie, dass Writer die Datensätze lesen kann.

Die Standard-Serienbrieffunktion von Writer verwendet eine registrierte Datenquelle. Sie können den Serienbrief-Assistenten, eine Adressdatenquelle oder den Datenquellen-Browser verwenden. Die aktuelle LibreOffice-Hilfe beschreibt den Serienbrief- Assistenten unter „Extras > Serienbrief-Assistent“ und ermöglicht das Einfügen von Datenbankfeldern über „Einfügen > Feld > Weitere Felder > Datenbank“ . Weitere Informationen finden Sie in der offiziellen Referenz zu Datenbankfeldern .

LibreOffice Writer zeigt eine Datenquelle mit Kundenzeilen und normalen Serienbrieffeldern in einem Brief an.
Verwenden Sie die Datenquellenansicht von Writer, um zu überprüfen, ob die erwarteten Spalten und Datensätze sichtbar sind, bevor Sie die Bildautomatisierung hinzufügen.

Diese Prüfung ist auch dann nützlich, wenn das endgültige Makro die Tabelle direkt einliest. Sie erkennt häufige Probleme frühzeitig: das falsche Tabellenblatt, unerwartete Spaltenüberschriften, leere Datensätze oder eine Tabelle, die nach der Registrierung verschoben wurde.

Für den reinen Textseriendruck können Sie eine Spaltenüberschrift in das Dokument ziehen oder ein Seriendruckfeld über die Registerkarte „Datenbank“ einfügen. Die offizielle Writer-Hilfe bestätigt, dass diese Felder beim Seriendruck durch Datenbankinhalte ersetzt werden. Bei variablen Bildern sollten Sie jedoch nicht davon ausgehen, dass das Ziehen ImagePathin das Dokument den Pfad in ein Bild umwandelt. Es handelt sich um Daten, solange sie nicht vom Code interpretiert und ein Grafikobjekt aktualisiert wird.

Schritt 3: Erstellen Sie die Writer-Vorlage und benennen Sie den Bildplatzhalter.

Erstellen Sie das Layout für Brief, Zertifikat, Abzeichen oder Bericht in Writer. Verwenden Sie für die Textwerte entweder normale Serienbrieffelder oder eindeutige Platzhalter wie Komma {FirstName}, {LastName}Komma und Leerzeichen {CustomerID}, falls Ihr Makro diese automatisch ersetzt.

Fügen Sie als Nächstes ein Beispielbild an der Stelle ein, an der das variable Bild erscheinen soll. Legen Sie vor der Automatisierung die gewünschte Größe, den Zeilenumbruch und die Verankerung fest. LibreOffice dokumentiert Bildgrößen, Positionierung, Verankerung, Zeilenumbruch und das Verhalten verknüpfter Bilder im Kapitel „Bilder und Grafiken“ (Writer 26.2) .

LibreOffice Writer-Vorlage mit Seriendruckfeldern und einem ausgewählten Grafikplatzhalter namens MergeImage.
Reservieren Sie die endgültige Bildposition in der Vorlage und geben Sie dem Grafikobjekt einen festen Namen, z. B. MergeImage.

Geben Sie dem Grafikobjekt einen eindeutigen Namen, z. B. „Grafikobjekt“ MergeImage. Der genaue Eigenschaftendialog kann je nach Version variieren. Wenn Sie sich nicht sicher sind, welches Objekt Writer bereitstellt, verwenden Sie „Tools > Entwicklungstools“ . Die Entwicklungstools von LibreOffice können Grafikobjekte, Eigenschaften, Methoden und Schnittstellen im aktuellen Dokument untersuchen. Dadurch sind sie ein zuverlässigeres Diagnosewerkzeug als das Erraten eines internen Objektnamens.

Für ein einheitliches Layout sollten Sie für alle Quellbilder dasselbe Seitenverhältnis verwenden oder festlegen, wie diese zugeschnitten werden sollen. Writer kann Grafiken zwar an die Abmessungen des Platzhalters anpassen, aber ein Porträtfoto, das in einen breiten, bannerförmigen Rahmen eingefügt wird, sieht trotzdem falsch aus, solange Sie die Dateien nicht vorher normalisieren.

Schritt 4: Automatisieren Sie den Export von variablen Bildern und Dokumenten.

Die wichtigste Automatisierungsoperation ist einfach: Vorlage öffnen, Textplatzhalter ersetzen, das benannte Grafikobjekt suchen, die Bilddatei der Zeile in dieses Objekt laden und das Ergebnis exportieren. Die UNO-API von LibreOffice dokumentiert getGraphicObjects()den Zugriff auf eingebettete und verknüpfte Grafiken sowie den TextGraphicObjectDienst für Grafikeigenschaften. Die GraphicURLEigenschaft ist für die allgemeine Objektspeicherung zugunsten von veraltet Graphic, aber die aktuelle API weist explizit darauf hin, dass das Festlegen einer externen URL das Bild in das Grafikobjekt lädt. Dies ist praktisch für ein einfaches Basic-Makro, das lokale Dateipfade verwendet.

LibreOffice Basic IDE zeigt ein Serienbriefmakro an, das einen Bildpfad liest und ein Writer-Grafikobjekt aktualisiert.
Die Automatisierungsschicht wandelt einen ImagePath-Wert in die tatsächliche Grafik um, die in jedem generierten Dokument angezeigt wird.

Das folgende Beispiel ist bewusst klein gehalten. Passen Sie die drei Pfade, den Tabellennamen, die Spaltenindizes und die Platzhalternamen an Ihre eigenen Dateien an. Testen Sie es zunächst mit zwei Datensätzen, bevor Sie eine größere Menge verarbeiten.

Sub MailMergeWithImages()
    Dim calcDoc As Object, sheet As Object, doc As Object
    Dim graphics As Object, imageObj As Object
    Dim row As Long
    Dim firstName As String, lastName As String
    Dim imagePath As String, outputName As String
    Dim sourceURL As String, templateURL As String, outputDir As String

    sourceURL = ConvertToURL("C:\MailMerge\customers.ods")
    templateURL = ConvertToURL("C:\MailMerge\LetterTemplate.odt")
    outputDir = ConvertToURL("C:\MailMerge\Output")

    calcDoc = StarDesktop.loadComponentFromURL(sourceURL, "_blank", 0, Array())
    sheet = calcDoc.Sheets.getByName("Sheet1")

    row = 1  ' row 0 contains headers
    Do While sheet.getCellByPosition(0, row).String <> ""
        firstName = sheet.getCellByPosition(1, row).String
        lastName = sheet.getCellByPosition(2, row).String
        imagePath = sheet.getCellByPosition(4, row).String
        outputName = sheet.getCellByPosition(5, row).String

        doc = StarDesktop.loadComponentFromURL(templateURL, "_blank", 0, Array())

        ReplaceAll doc, "{FirstName}", firstName
        ReplaceAll doc, "{LastName}", lastName

        graphics = doc.getGraphicObjects()
        If graphics.hasByName("MergeImage") Then
            imageObj = graphics.getByName("MergeImage")
            imageObj.GraphicURL = ConvertToURL(imagePath)
        Else
            MsgBox "Graphic object MergeImage was not found."
            doc.close(True)
            Exit Sub
        End If

        Dim args(1) As New com.sun.star.beans.PropertyValue
        args(0).Name = "FilterName"
        args(0).Value = "writer_pdf_Export"
        args(1).Name = "Overwrite"
        args(1).Value = True

        doc.storeToURL(outputDir & outputName & ".pdf", args())
        doc.close(True)
        row = row + 1
    Loop

    calcDoc.close(True)
End Sub

Sub ReplaceAll(doc As Object, findText As String, replacement As String)
    Dim d As Object
    d = doc.createReplaceDescriptor()
    d.SearchString = findText
    d.ReplaceString = replacement
    doc.replaceAll(d)
End Sub

Dieses Makro ist ein Muster, kein universell einsetzbares Programm. LibreOffice-Installationen können unterschiedliche Sicherheitsrichtlinien für Makros, Pfadregeln des Betriebssystems und Vorlagenlayouts aufweisen. Die wichtigsten verifizierten API-Konzepte sind, dass Writer seine Grafikobjektsammlung bereitstellt und LibreOffice Grafiken von einer externen URL laden kann. Bei größeren Installationen empfiehlt es sich, Grafiken über die moderne API zu laden, anstatt Graphicsich auf das Kompatibilitätsverhalten von XTextGraphicObjectsSupplier und TextGraphicObject zu verlassen .GraphicURL

Schritt 5: Führen Sie eine kleine Charge durch und überprüfen Sie das Ergebnis.

Bevor Sie die gesamte Datenquelle verarbeiten, führen Sie zwei oder drei bewusst unterschiedliche Zeilen aus: eine JPG-Datei, eine PNG-Datei und idealerweise ein Bild mit einem anderen Seitenverhältnis. Stellen Sie vor der Skalierung sicher, dass Folgendes stimmt:

  • Der Empfängername im Dokument stimmt mit dem Bild aus derselben Tabellenzeile überein.
  • Im endgültigen Dokument wird kein Bildpfad als Text angezeigt.
  • Der Ausgabedateiname entspricht dem gewünschten Datensatz und überschreibt keinen anderen Empfänger.
  • Das Bild passt in den reservierten Bereich, ohne dass Text auf eine neue Seite verschoben oder ein anderes Objekt verdeckt wird.
  • Die generierte PDF- oder ODT-Datei öffnet sich unabhängig, nachdem LibreOffice und Calc geschlossen wurden.

Diese letzte Prüfung ist wichtig, da verknüpfte und eingebettete Grafiken sich unterschiedlich verhalten. Im aktuellen Writer-Handbuch wird erläutert, dass ein verknüpftes Bild eine separate Dateireferenz bleibt, während ein eingebettetes Bild Teil des Dokuments wird. Wenn Sie ODT-Dateien an einen anderen Rechner senden, stellen Sie sicher, dass das Ergebnis nicht von einem lokalen Pfad abhängt, der nur auf dem Rechner existiert, der die Zusammenführung durchgeführt hat.

Häufige Fehler und die schnellste Lösung

Die Ausgabe zeigt den Dateipfad anstelle des Bildes an.

Sie haben es ImagePathals normales Serienbrieffeld eingefügt. Dadurch wird erwartungsgemäß Text erzeugt. Behalten Sie den Pfad in der Datenquelle bei, lassen Sie das Makro die Daten aber in das benannte Grafikobjekt laden.

Jeder Datensatz erhält dasselbe Bild

Das Vorlagenbild wurde zwischen den Datensätzen nicht geändert, oder Ihre Schleife liest eine feste Zelle. Protokollieren Sie die Zeilennummer ImagePathwährend eines Tests mit zwei Datensätzen. Wenn sich der Pfad ändert, das Bild aber nicht, überprüfen Sie den Namen des Grafikobjekts mit den Entwicklertools.

Die Makro-Meldung besagt, dass MergeImage nicht existiert.

Die Grafik wurde umbenannt, ersetzt oder wird nicht unter dem erwarteten Namen angezeigt. Wählen Sie das Bild aus und untersuchen Sie es mit „Tools > Entwicklungstools“ . Die UNO-API stellt Grafikobjekte anhand ihres Namens bereit, daher müssen Makro und Vorlage exakt übereinstimmen.

Auf einem anderen Computer verschwinden die Bilder.

Sie haben wahrscheinlich ein Dokument gespeichert, das noch auf externe Dateien verweist. Wenn Ihnen die Portabilität wichtig ist, stellen Sie sicher, dass das generierte Dokument das Bild einbettet oder exportieren Sie es nach dem Laden des Bildes als PDF. Der Bildleitfaden von LibreOffice erklärt den Unterschied zwischen verknüpften und eingebetteten Grafiken und wie Verknüpfungen aufgehoben werden können, um Dateien einzubetten.

Beim HTML-Serienbrief gehen Bilder verloren

Dies ist eine bekannte Einschränkung, die Sie vor der Auswahl des E-Mail-Ausgabeformats prüfen sollten. Die LibreOffice-Hilfe weist darauf hin, dass beim Versenden eines Serienbriefs im HTML-Format eingebettete oder verlinkte Bilder nicht mit der E-Mail versendet werden. Ist das Bild unerlässlich, verwenden Sie einen PDF-Anhang oder testen Sie einen anderen Zustellungsablauf, anstatt davon auszugehen, dass der HTML-Serienbrief das Bild beibehält. Siehe „ Erstellen eines Serienbriefs“ .

Wann sollte man stattdessen den MailMerge-UNO-Dienst von LibreOffice verwenden?

Wenn Ihre Textfelder bereits die native Datenbank-Serienbrieffunktion von Writer verwenden und Sie die Ausgabe programmatisch steuern möchten, bietet LibreOffice einen entsprechenden MailMergeDienst an. Zu dessen dokumentierten Eigenschaften gehören unter anderem DataSourceName`<properties>`, Command` DocumentURL<properties> `, OutputURL`<properties>` FileNameFromColumn, `<properties>` und ` SaveAsSingleFile<properties>`. Diese API ist nützlich, wenn Sie den Standard-Serienbriefversand per Code automatisieren möchten. Sie dokumentiert jedoch kein Feld für den Bilddateipfad pro Datensatz, sodass Sie die Serienbriefausführung möglicherweise mit der Verarbeitung von Grafikobjekten kombinieren müssen. Weitere Informationen finden Sie in der offiziellen Referenz zum MailMerge-Dienst .

Abschließende Checkliste

  • Verwenden Sie die normale Writer-Serienbrieffunktion, wenn das Bild für jeden Empfänger festgelegt ist.
  • Verwenden Sie eine leere ImagePathSpalte, wenn das Bild je nach Datensatz variiert.
  • Benennen Sie den Platzhalter für die Schriftstellergrafik und behalten Sie dessen Abmessungen bei.
  • Den Bildpfad in der Automatisierung auflösen; erwarten Sie nicht, dass ein Text-Serienbildfeld automatisch in ein Bild umgewandelt wird.
  • Testen Sie zwei oder drei Datensätze, bevor Sie einen kompletten Batch ausführen.
  • Öffnen Sie die exportierten Dateien, nachdem Sie die Quelldokumente geschlossen haben, um zu beweisen, dass die Ausgabe in sich abgeschlossen ist.

Für die meisten kleinen und mittleren Aufträge bietet eine Calc-Tabelle in Kombination mit einer Writer-Vorlage und einem kurzen Basic-Makro die beste Balance zwischen Transparenz und Kontrolle. Die Einrichtung ist zwar etwas aufwendiger als bei einem herkömmlichen Serienbrief, aber Sie sehen genau, welche Zeile welches Bild enthält, können den Ausgabedateinamen festlegen und das Ergebnis vor dem Versenden hunderter personalisierter Dateien überprüfen.

Einen Kommentar hinterlassen

So verschieben Sie ein Bild in Microsoft Word

So verschieben Sie ein Bild in Microsoft Word

Lernen Sie, wie Sie in Word ein Bild verschieben, den Textumbruch auswählen, es mit einem Absatz verbinden oder auf der Seite fixieren und Probleme mit Bildern beheben, die sich nicht verschieben lassen.

So fügen Sie ein Kontrollkästchen in Excel ein: Zwei einfache Methoden

So fügen Sie ein Kontrollkästchen in Excel ein: Zwei einfache Methoden

Erfahren Sie, wie Sie in Excel mit dem In-Cell-Tool ein Kontrollkästchen einfügen, markierte Elemente mit Formeln zählen oder in älteren Desktop-Versionen ein verknüpftes Formularsteuerelement hinzufügen.

So füllen Sie Buchstaben in Excel automatisch aus: A bis Z und darüber hinaus

So füllen Sie Buchstaben in Excel automatisch aus: A bis Z und darüber hinaus

Generieren Sie in Excel Buchstaben von A bis Z, Kleinbuchstaben oder Bezeichnungen jenseits von Z mit einer Ausfüllgriffformel, einer SEQUEENCE oder einer wiederverwendbaren benutzerdefinierten Liste.

So streichen Sie Text in Excel durch: Tastenkombinationen und Schritt-für-Schritt-Anleitungen

So streichen Sie Text in Excel durch: Tastenkombinationen und Schritt-für-Schritt-Anleitungen

Erfahren Sie, wie Sie in Excel unter Windows, Mac und im Web durchstreichen, einen Teil einer Zelle formatieren und die Linie entfernen, ohne ihren Wert zu löschen.

Was ist Microsoft Access? Wie funktionieren seine Datenbanktools?

Was ist Microsoft Access? Wie funktionieren seine Datenbanktools?

Microsoft Access ist eine Windows-Datenbankanwendung zum Speichern zusammengehöriger Datensätze, Erstellen von Abfragen, Dateneingabeformularen und Generieren von Berichten. Erfahren Sie, wie es funktioniert und wann es sich eignet.

Office Outlook 2010 Import und Export: Daten mit einer PST-Datei verschieben

Office Outlook 2010 Import und Export: Daten mit einer PST-Datei verschieben

Erfahren Sie, wie Sie eine PST-Datei in Outlook 2010 importieren oder E-Mails, Kontakte, Kalender und Aufgaben exportieren. Folgen Sie den richtigen Menüs, um fehlende Ordner oder Duplikate zu vermeiden.

Höhe und Breite der Gitternetzlinien in Word 2010 ändern

Höhe und Breite der Gitternetzlinien in Word 2010 ändern

Erfahren Sie, wie Sie in Word 2010 die Höhe und Breite der Rasterlinien anpassen, die sichtbare Linienfrequenz ändern und den zugrunde liegenden horizontalen und vertikalen Rasterabstand festlegen.

Outlook-PST-Passwort mit Nucleus Kernel wiederherstellen

Outlook-PST-Passwort mit Nucleus Kernel wiederherstellen

Stellen Sie ein vergessenes Outlook PST-Passwort mit den aktuellen Schritten von Kernel wieder her, einschließlich der Anleitung zur Identifizierung der richtigen Datei, zum Erstellen einer Sicherungskopie und zur Überprüfung der Grenzen des Tools.

So fügen Sie eine interaktive Webseite in eine PowerPoint-Folie ein

So fügen Sie eine interaktive Webseite in eine PowerPoint-Folie ein

Mit dem LiveWeb-Add-in können Sie eine Website auf einer PowerPoint-Folie platzieren, deren Größe und Aktualisierungsverhalten festlegen und die Kompatibilität vor der Präsentation überprüfen.

Fügen Sie Ihrem Outlook-Kalender nationale Feiertage hinzu

Fügen Sie Ihrem Outlook-Kalender nationale Feiertage hinzu

Fügen Sie länderspezifische Feiertage in der neuen Outlook-Version, Outlook im Web oder dem klassischen Outlook hinzu. Erfahren Sie, wie Sie doppelte Termine vermeiden und fehlende Daten für 2026/27 überprüfen.