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.
Welche Funktionen möchten wir realisieren:
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 | F | G | |
---|---|---|---|---|---|---|---|
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 |
Ö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:
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:
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.
Option Explicit
' ************************************************************************************************
' Autor/en: http://www.online-vba.de - Marc Wershoven
' Verwendung der Quelltexte auf eigene Gefahr!
' Es gelten die Nutzungsbedingungen von www.online-vba.de!
' Original-Quelltext: www.online-vba.de/vba_tutorialvorlage.php
' ************************************************************************************************
'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
Eine manuelle Änderung müssen Sie am eingefügten Quelltext noch vornehmen. Ziemlich am Anfang finden Sie
die Zeilen:
Option Explicit
' ************************************************************************************************
' Autor/en: http://www.online-vba.de - Marc Wershoven
' Verwendung der Quelltexte auf eigene Gefahr!
' Es gelten die Nutzungsbedingungen von www.online-vba.de!
' Original-Quelltext: www.online-vba.de/vba_tutorialvorlage.php
' ************************************************************************************************
Private Sub Document_New()
UserForm1.Show
End Sub
Dieser Quelltext bewirkt, dass bei Erstellung eines neuen Dokumentes anhand unserer Vorlage, die UserForm geöffnet wird!
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.
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:
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!
Zu guter Letzt habe ich Ihnen die in diesem Tutorial als Beispiel verwendeten Dateien als Download bereitgestellt.
Die Links dazu finden Sie hier:
1) Die Adressliste (Excel®) - Beispieldatei-Download
(Dateiformat: *.xlsx - Erstellt mit Microsoft® Excel® Version 2013 -
Diese Datei ist kompatibel mit Microsoft® Excel® Version 2007 oder neuer - Dateigröße: ca. 9 KiloBytes)
2) Die Vorlagendatei (Word®) - Beispieldatei-Download
(Dateiformat: *.dotm - Erstellt mit Microsoft® Word® Version 2013 -
Diese Datei ist kompatibel mit Microsoft® Word® Version 2007 oder neuer - Dateigröße: ca. 22 KiloBytes)
Wichtiger Hinweis: Als kostenlosen Service stellen die Autoren von
www.Online-VBA.de Dateien zum Download bereit. Dieser Download erfolgt stets auf eigene Gefahr.
Bitte beachten Sie die Nutzungsbedingungen und das Impressum von www.Online-VBA.de, bevor Sie die Datei herunterladen.
Ein kostenloser Support oder Service für die unter www.Online-VBA.de veröffentlichen Werke kann leider nicht angeboten werden!
Autor: Marc Wershoven (Dezember 2013)
VBA Programmierer gesucht?
http://www.WershovenOnline.de
Sie haben beispielsweise eine Frage zu einer Ihrer eigenen Makroprogrammierungen in VBA? Oder Sie suchen Unterstützung und Informationen über eine bestimmte Microsoft® Excel® Formel? Bei nahezu allen Fragen und Problemen rund um Microsoft® Office und VBA Makros steht Ihnen unser individueller Quick E-Mail Support zur Verfügung. Einfach, schnell und unkompliziert Ihre Frage in einer E-Mail formulieren, mit oder ohne Screenshots oder einer Beispieldatei absenden und kurze Zeit später haben Sie eine vollständige Lösung inkl. ausführlicher Erklärung vom Profi in Ihrem Postfach!
Zusätzlich besteht die Option, dass wir uns mittels Fernwartung (selbstverständlich nach Ihrem Einvertändnis) direkt "live" mit Ihnen zusammen an Ihrem Bildschirm gemeinsam Fragen und Problemstellungen anschauen und lösen können!
Weitere Informationen zu diesem kostenpflichtigen Angebot finden Sie auf der Anbieterseite von WershovenOnline® auf www.wershovenonline.de.
Zum Anbieter des Quick-E-Mail-Support...