Tutorial: Word-Vorlage mit Daten aus Excel befüllen
Die Ausgangslage
Wer viele Briefe schreibt, kennt das ewige Eintragen von Adressen an die richtigen Positionen im Microsoft Word Dokument.
Dieses Tutorial soll Ihnen Schritt für Schritt erklären, wie Sie sich eine eigene Word Vorlage erstellen,
die beim Öffnen eine Eingabemaske anzeigt und anschließend die zur Auswahl passenden Informationen (z.B. Adressdaten) aus einer
Excel Tabelle an die gewünschten Positionen im Word Dokument einfügt. In diesem Tutorial wird lediglich
ein leichtes und stark vereinfachtes Beispiel verwendet und die ersten Schritte für Einsteiger und Anfänger erläutert.
Daher ersetzt dieses Tutorial keine fundierte Schulung oder ein Seminar, sondern bietet lediglich den Service,
um die ersten Schritte mit VBA und einer Eingabemaske und der Verbindung von Microsoft Word und
Microsoft Excel auszuprobieren. Für Fortgeschrittene ist dieses Tutorial nicht geeignet!
Sie können das Beispiel jedoch selbstständig verändern und beliebig ausbauen.
Hinweis: Für dieses Tutorial wurde Microsoft Office Professional Version 2013 verwendet.
Als Betriebssystem wurde Windows 7 verwendet. Wenn Sie eine andere Version verwenden, kann
es Unterschiede im Erscheinungsbild geben! Verwenden Sie Microsoft Office für Mac? Hier gibt es einige
weitere Unterschiede, welche ich in diesem Tutorial aber nicht weiter ansprechen möchte.
Ich habe die unten folgenden Beispiele als fertige Dateien zum Download
bereitgestellt. Sie finden die Download-Links am Ende dieses Tutorials.
Die Zielsetzung
Welche Funktionen möchten wir realisieren:
- Beim Öffnen der Word Vorlage soll eine Eingabemaske erscheinen, welche alle Namen der Excel Adressliste anzeigt.
- Beim Auswahl eines Namens auf der Eingabemaske sollen die dazu passenden Informationen aus der Adressliste (Excel) an definierte Textmarken im Word Dokument eingefügt werden.
Schauen wir uns die Ausgangslage an. Ich habe eine kleine Beispieltabelle erzeugt. Es ist wirklich ein sehr simples Beispiel. Wenn Sie dieses Beispiel nachbauen möchten, öffnen Sie nun Ihr Microsoft Excel und öffnen Sie eine neue und leere Arbeitsmappe. Erstellen Sie nun Ihre Adressliste auf dem Tabellenblatt Tabelle1.
A | B | C | D | E | |
---|---|---|---|---|---|
1 | Nr. | Name | Adresse | PLZ und Ort | |
2 | 1 | Marc Wershoven | Meine Strasse 1 | 12345 Köln | |
3 | 2 | Max Mustermann | Musterallee 2 | 54321 Musterhausen | |
4 | 3 | Berta Beispiel | Beispielweg 3 | 22334 Beispielstadt | |
5 | 4 | Petra Plural | Pluralplatz 4 | 43215 Kleiner Ort | |
6 |
Wichtige Annahme für dieses Beispiel: Wir gehen davon aus, das es jeden Namen, den wir eingeben, nur EINMAL gibt!
Sie können die Datei nun als MeineAdressen.xlsx abspeichern und anschließend Microsoft Excel vollständig schließen.
Die Word Vorlage erstellen und mit Textmarken versehen
Öffnen Sie Microsoft Word mit einem leeren Dokument.
Erstellen Sie Ihren Vorlagentext und fügen Sie die entsprechenden Textmarken ein.
Das Endergebnis könnte z.B. so aussehen:

Markieren Sie die Stelle im Word Dokument, der Sie einen Textmarkennamen geben möchten. In unserem Beispiel habe ich an der Stelle, wo später der Name der Adresse eingefügt werden soll, den Text "Name" eingetragen. Diesen markieren Sie mit der Maus vollständig. Wechseln Sie im Menüband auf Einfügen - Textmarke. Es öffnet sich ein Fenster (siehe Screenshot). Geben Sie nun den gewünschten Namen für die Textmarke ein und klicken Sie auf "Hinzufügen", in unserem Beispiel heißt die Textmarke "Textmarke_Name". Das war es schon.
Bitte legen Sie die folgenden Textmarken in unserer Word Vorlage an:
- Textmarke_Name
- Textmarke_Adresse
- Textmarke_PLZ_Ort
Die Eingabemaske erstellen
Nachdem wir unsere Datengrundlage und die Vorlage vorbereitet haben, erstellen wir uns
nun eine Eingabemaske. Zuerst entwerfen wir das Layout unserer Oberfläche,
die auch als UserForm bezeichnet wird. Dazu drücken Sie in Word die Tastenkombination ALT und F11.
Jetzt wird die integrierte Entwicklungsumgebung geöffnet.
Fügen Sie eine neue UserForm hinzu, welche den Namen UserForm1 bekommt. (Sollen Sie nicht wissen, wie Sie eine UserForm anlegen,
gibt es in einem vorherigen Tutorial eine ausführliche Erklärung. Den Link zu diesem finden Sie
hier.)
Wir benötigen auf unserer UserForm1 folgende Komponenten:
- 1x ListBox (Name: ListBox1)
- 1x CommandButton (Name: CommandButton_1 - Caption: Einfügen)
- 1x CommandButton (Name: CommandButton_2 - Caption: Abbrechen)
- 1x Label (Um die Oberfläche zu beschriften!)

Damit haben wir unsere Oberfläche fertiggestellt. Sie können selbstverständlich Farben und Formen der Benutzeroberfläche beliebig an Ihre Bedürfnisse anpassen. Es folgt die eigentliche Programmierung.
Die Funktionalitäten der Eingabemaske erstellen
Um unserer Benutzeroberfläche "das Leben einzuhauchen", Doppel-Klicken Sie bitte auf
die "Abbrechen"-Schaltfläche, unserem CommandButton_2 auf unserer UserForm1. Der Quellcode Editor wird geöffnet und
Sie sehen schon etwas Quelltext. Löschen Sie diesen und fügen Sie den folgenden Quelltext
vollständig ein.
Der Quelltext
Option Explicit
Option Compare Text
' Original-Quelltext unter: https://www.online-vba.de/vba-tutorial-vorlage-mit-werten-aus-excel-fuellen
' Express-Hilfe für VBA unter https://www.online-vba.de/vba-expresshilfe
' Es gelten die Nutzungsbedingungen von Online-VBA.de
'In dieser Konstanten speichern wir uns
'den Pfad und den Dateinamen der Adressliste (Excel)
'Bitte entsprechend anpassen!
Private Const sAdressDatei As String = _
"C:\TEST\TutorialWordMitExcelFuellen\MeineAdressen.xlsx"
'Wie heisst das Tabellenblatt, auf welchem sich die Adressen befinden?
'Bitte entsprechend anpassen!
Private Const sTabellenblatt As String = "Tabelle1"
Private Sub CommandButton1_Click()
Dim oExcelApp As Object
Dim oExcelWorkbook As Object
Dim lZeile As Long
'Nur wenn ein Eintrag in der Liste markiert ist, wird das Makro ausgeführt
If ListBox1.ListIndex >= 0 Then
'Zuerst wird die Excel Datei geöffnet
Set oExcelApp = CreateObject("Excel.Application")
Set oExcelWorkbook = oExcelApp.Workbooks.Open(sAdressDatei)
lZeile = 2 'Wir starten in Zeile 2, da in der ersten Zeile überschriften stehen
With oExcelWorkbook.sheets(sTabellenblatt)
Do While .Cells(lZeile, 1) <> ""
'Wenn der Eintrag der Listbox mit dem Namen in der Adresstabelle
'übereinstimmt, dann werden die Textmarken gefüllt!
If ListBox1.Text = CStr(.Cells(lZeile, 2).Value) Then
'Eintrag gefunden, Textmarken füllen
ActiveDocument.Bookmarks("Textmarke_Name").Range.Text = _
CStr(.Cells(lZeile, 2).Value)
ActiveDocument.Bookmarks("Textmarke_Adresse").Range.Text = _
CStr(.Cells(lZeile, 3).Value)
ActiveDocument.Bookmarks("Textmarke_PLZ_Ort").Range.Text = _
CStr(.Cells(lZeile, 4).Value)
Exit Do
End If
lZeile = lZeile + 1
Loop
End With
oExcelWorkbook.Close False
oExcelApp.Quit
Else
MsgBox "Bitte wählen Sie einen Eintrag aus der Liste aus!", _
vbInformation + vbOKOnly, "HINWEIS!"
Exit Sub
End If
Set oExcelWorkbook = Nothing
Set oExcelApp = Nothing
Unload Me
End Sub
Private Sub CommandButton2_Click()
Unload Me
End Sub
Private Sub UserForm_Initialize()
Dim oExcelApp As Object
Dim oExcelWorkbook As Object
Dim lZeile As Long
'Zuerst wird die Excel Datei geöffnet
Set oExcelApp = CreateObject("Excel.Application")
Set oExcelWorkbook = oExcelApp.Workbooks.Open(sAdressDatei)
ListBox1.Clear
lZeile = 2 'Wir starten in Zeile 2, da in der ersten Zeile überschriften stehen
With oExcelWorkbook.sheets(sTabellenblatt)
Do While .Cells(lZeile, 1) <> ""
ListBox1.AddItem CStr(.Cells(lZeile, 2).Value)
lZeile = lZeile + 1
Loop
End With
oExcelWorkbook.Close False
oExcelApp.Quit
Set oExcelWorkbook = Nothing
Set oExcelApp = Nothing
End Sub
So einfach läuft unsere VBA-Expresshilfe ab
Erläuterungen zum Quelltext
Eine manuelle Änderung müssen Sie am eingefügten Quelltext noch vornehmen. Ziemlich am Anfang finden Sie die Zeilen:
Private Const sAdressDatei As String = _
"C:\TEST\TutorialWordMitExcelFuellen\MeineAdressen.xlsx"
Da wir Applikations übergreifend arbeiten möchten, benötigen wir noch zusätzliche Befehle. Nämlich die aus Microsoft Excel. Da ich in diesem Beispiel mit dem sogenannten "Late-Binding" arbeite, benötigen wir diesen Verweis nicht zwingend! Der Vollständigkeit halber erwähne ich diesen Schritt trotzdem!
Dazu gehen Sie in der Entwicklungsumgebung im Menü auf Extras - Verweise. Es wird Ihnen ein Fenster geöffnet. Suchen Sie dort nach der Bibliothek "Microsoft Excel xx.0 Object Library". Ersetzen Sie das xx entsprechend Ihrer verwendeten Version. Als Beispiel: Bei Microsoft Excel Version 2013 steht dort 15.0. Setzen Sie das Häkchen um die Bibliothek verwenden zu können und bestätigen Sie Ihre Eingabe mit "OK".

Option Explicit
' Original-Quelltext unter: https://www.online-vba.de/vba-tutorial-vorlage-mit-werten-aus-excel-fuellen
' Express-Hilfe für VBA unter https://www.online-vba.de/vba-expresshilfe
' Es gelten die Nutzungsbedingungen von Online-VBA.de
Private Sub Document_New()
UserForm1.Show
End Sub
Das war es schon! Wie die Programmierung funktioniert, habe ich Ihnen in grüner Schrift in den Quelltext geschrieben.
Speichern Sie die Datei nun als Word Vorlage mit Makros (Dateiname: MeineVorlage.dotm) und schließen Sie Word anschließend.
Jetzt testen wir!
Nun ist es soweit! Wir probieren das Ganze aus.
Doppel-Klicken Sie im Windows-Explorer
auf unsere Word-Vorlagendatei MeineVorlage.dotm. Es öffnet sich direkt anschließend unsere Eingabemaske:

Schlusswort
Ich hoffe, ich konnte Ihnen an diesem einfachen Beispiel die ersten Schritte
zur Verbindung von Excel und Word näherbringen. Selbstverständlich gibt es noch viele weitere Möglichkeiten,
Erweiterungen und Verschönerungen, die man einbauen kann. Wie sagt man so
schön: "Man kann immer mehr dazu bauen und hübscher geht auch immer!". Diese Aufgabe
überlasse ich allerdings Ihnen selbst!
Ich wünsche Ihnen Viel Erfolg und Spass bei der Umsetzung!
Download der Beispieldatei
Zu guter Letzt habe ich Ihnen die in diesem Tutorial als Beispiel verwendeten Dateien als Download bereitgestellt.
Die beiden Links dazu finden Sie hier:
1) Die Adressliste (Excel)
DOWNLOAD
2) Die Vorlagendatei (Word)
DOWNLOAD
Anmerkungen und Hinweise
Dieser Codeschnipsel wurde geschrieben von Marc Wershoven im Jahr 2014.
Die Nutzung erfolgt auf eigene Gefahr.
Bitte denken Sie immer zuerst an eine ausreichende Datensicherung.
Wir können keinen kostenlosen Support anbieten.
Es gelten unsere Nutzungsbedingungen.
Wichtiger Hinweis für Downloads: Als kostenlosen Service stellen die Autoren von Online-VBA.de Dateien zum Download bereit. Dieser Download erfolgt stets auf eigene Gefahr. Bitte beachten Sie die Nutzungsbedingungen, bevor Sie die Datei herunterladen. Einen kostenlosen Support oder Service für die hier veröffentlichen Werke kann leider nicht angeboten werden!