Readdy Write  
0,00 €
Your View Money
Views: Count
Self 20% 0
Your Content 60% 0

Users by Links 0
u1*(Content+Views) 10% 0
Follow-Follower 0
s2*(Income) 5% 0

Count
Followers 0
Login Register as User

Automatisch Serienbriefe aus Excel erstellen mit Filter

02.10.2018 (👁355)


Dieses Beispiel zeigt, wie man mit wenig Aufwand aus Excel Serienbriefe in Word erstellen kann.

Dabei sind die Roh-Adressdaten in Excel gespeichert. Die Daten werden über ein kleinen Pivot gefiltert und per Taste werden dann die gefilterten Serienbriefe erstellt.

Code :vba

Betrifft: Excel, Pivot Word Serienbrief MailMerge

Dateien im Anhang zum Download

Adressdaten

Die Daten werden als Rohdaten in einer Exceldatei gesammelt.

Hier im Excel-Blatt: Rohdaten ab Zelle A1 bis G10000

Serienbrief_Adressen

Im Tabellenblatt: Serienbrief_Adressen sind die Rohdaten mit einer klassischen Pivot-Tabelle zusammengefasst.

Dabei schaltet man die Pivottabelle auf Pivot-Eigenschaften:klassische Ansicht und alle Teilsummen und Gesamtsummen aus.

Daten Filtern und Auswählen:

in Pivot-Tabelle kann man jetzt über die Dropdown-Felder in den Tabellen-Kopf Zellen die Ausgabe filtern und anpassen.

Diese Änderungen werden dann in der Serienbrief-Ausgabe automatisch gefiltert übernommen.

Serienbrief starten

Mit dem Button: Word Serienbrief erstellen wird dann ein Makro gestartet, welches die Word-Datei öffnet und daraus Serienbrief in der Vorschau erstellt.

Word Ausgabe

Wenn man auf das geöffnete Word-Dokument Serienbrief1 geht, dann findet man zu jeder Adresse eine Seite als Serienbrief.

Wichtig: die Ausgabe sollte nun nur die Adressen enthalten, welche in der Excel-Datei gefiltert wurden.

Das Word-Ausgabedokument enthällt dann zu allen Adressen eine Ausgabeseite.

Serienbrief-Vorlage

Die Original-Serienbrief Word-Datei wird dabei nur beim Beginn des vba Makros geöffnet und die Adressfelder werden automatisch an die öffnende Excel-Datei angebunden.

Dateien:

Beide Dateien, die Excel Datei mit den Adressen und dem Start-Button, sowie die Serienbrief-Master Datei liegen im gleichen Verzeichnis.


Vba Makro Code

Mit Alt-F11 kommt man in der Excel-Datei auf den angebundenen Makro-Code.

Der eigentliche vba Code steht in dem Ordner: von Module->Modul1

Hierbei kann man im Kopfbereich den Word-Dateinamen anpassen und den Namen der Pivot-Tabelle

Private Const sWord_Document_Name As String = "Serienbriefe_aus_Excel.docx"

Private Const Table_with_Adresses As String = "Serienbrief_Adressen"

 

Vba Code

'------< SETUP >------

Private Const sWord_Document_Name As String = "Serienbriefe_aus_Excel.docx"

Private Const Table_with_Adresses As String = "Serienbrief_Adressen"

'------< SETUP >------

 

 

 

 

 

Sub Erstelle_Word_Serienbrief_als_Vorschau()

    '--------------------< Word_oeffnen() >--------------------

 

    '< Path >

    Dim sCurrent_Path As String

    sCurrent_Path = ActiveWorkbook.Path

 

    Dim sFull_Path_of_Word_File

    sFull_Path_of_Word_File = sCurrent_Path & "\" & sWord_Document_Name

    '</ Path >

 

    '< Word starten >

    '< with word_refernece >

    'Dim app As Word.Application              '*Verweis Word-dll

    'Set app = New Word.Application           '*Verweis Word-dll

    '</ with word_refernece >

 

    '< with late-binding >

    Dim app As Object                           '*late-binding

    Set app = CreateObject("Word.Application")  '*late-binding

    '</ with late-binding >

    

    app.Visible = True

    app.Activate

    '</ Word starten >

 

    '</ Word Document oeffnen >

    'Dim doc As Object      '*late-binding

    Dim doc As Word.Document 'word-dll

    Set doc = CreateObject("Word.Document")

    Set doc = app.Documents.Open(sFull_Path_of_Word_File, ConfirmConversions:=FalseReadOnly:=False, AddToRecentFiles:=False)

    '</ Word Document oeffnen >

    

    Dim wb As Workbook

    Set wb = ThisWorkbook

    

    Dim sExcel_Filename As String

    sExcel_Filename = ThisWorkbook.FullName

 

    '< Datenquelle einstellen >

    '*versions 2007+

    '*Datenquelle für den Seriendruck

    doc.MailMerge.MainDocumentType = wdFormLetters

    doc.MailMerge.OpenDataSource Name:="" & sExcel_Filename & "",

    ReadOnly:=False, LinkToSource:=True,

    Format:=wdOpenFormatAuto,

    Connection:="Provider=Microsoft.ACE.OLEDB.12.0;User ID=Admin;Data Source=" & sExcel_Filename & ";Mode=Read;Extended Properties=""HDR=YES;IMEX=1;" _

    , SQLStatement:="SELECT * FROM `" & Table_with_Adresses & "$`",

    SubType:=wdMergeSubTypeAccess

    '</ Datenquelle einstellen >

 

 

 

 

    '< output >

    doc.MailMerge.Destination = wdSendToNewDocument

    doc.MailMerge.Execute Pause:=False

    '</ output >

 

    doc.Close SaveChanges:=False

    Set doc = Nothing

    Set app = Nothing

    '--------------------</ Word_oeffnen() >--------------------

End Sub