Projekt-Anfragen: Tel: 07022/9319004 info@CodeDocu.de Software Entwicklung in C# WPF Asp.Net Core Vba Excel Word SQL-Server EF Linq, UWP Net
#

Download:

Datei 1: Excel_Serienbrief_Daten.xlsm
Datei 2: Serienbriefe_aus_Excel.docx

Automatisch Serienbriefe aus Excel erstellen mit Filter

 

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

 

 

 

 

 

Mobile
»
Automatisch Serienbriefe aus Excel erstellen mit Filter

.

Jobs, Projekte, Angebote für Freiberufler, Selbstständig an Info@CodeDocu.de