Anzeige

VBA
Programmierer
gesucht?
 
Anzeige
VBA Programmierer gesucht?
 

VBA Tutorials

Eine eigene Word® Vorlage die beim Öffnen Daten aus Excel® einfügt - für Anfänger geeignet!

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 Ausgangslage und 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
In diesem Tutorial geht es lediglich um Grundlagenwissen. Komplizierte Eingabeprüfungen und Fehlerbehandlungsroutinen werde ich nicht ansprechen. Diese Themen sind jedoch weitere Ausbaumöglichkeiten, wären aber in einem ersten Schritt für Anfänger zu viel auf einmal.

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               

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:

Abbildung 1 - Die Vorlagendatei mit Textmarken

Wenn Sie bisher noch nicht mit Textmarken / Textnamen gearbeitet haben, gehen Sie bitte wie folgt vor: 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

Damit haben wir den ersten Teil unserer Vorlage abgeschlossen. Der nächste Schritt ist die Eingabemaske.

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!)
Das Ergebnis könnte ungefähr so aussehen:
Abbildung 2 - Die Eingabemaske UserForm1

Hinweis zur Gestaltung: Wenn Sie ein Objekt, wie die TextBox oder den CommandButton, auf der UserForm1 anklicken, sehen Sie im Eigenschaftenfenster (dieses können Sie sich im Menü "Ansicht" zur Not einblenden lassen) ganz viele Einstellungsmöglichkeiten. Die Wichtigste für uns ist der "(Name)". Dieser muss wie oben in der Liste angegeben benannt sein (bspw. ListBox1, TextBox1, usw.), da sonst unsere Programmierung nicht funktionieren würde. Um einen Label-Text zu ändern oder die Schrift der Command_Buttons, können Sie die Eigenschaft Caption verwenden (im Eigenschaftenfenster) oder mit der Maus das Label markieren und mit einem erneuten Klick in den Editiermodus wechseln, dann sehen Sie den Cursor im Text blinken und können diesen nun verändern.

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.

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:

Private Const sAdressDatei As String = _
     "C:\TEST\TutorialWordMitExcelFuellen\MeineAdressen.xlsx"
Bitte passen Sie den entsprechenden Pfad so an, dass das Makro auch die Adressdatei auf Ihrem Rechner finden kann!

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".
Abbildung 3 - Verweise einstellen...

Als nächsten Schritt Doppel-Klicken Sie im Projekt-Explorer (links) auf den Eintrag "ThisDocument" und fügen Sie im Quelltextfenster folgenden Quelltext 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
' ************************************************************************************************


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.

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:

Abbildung 4 - Testergebnisse, so sollte es aussehen!

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 Beispieldateien

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)

Anzeige

VBA Programmierer gesucht?
http://www.WershovenOnline.de

Anzeige

Der Quick E-Mail Support von WershovenOnline®

Schnelle Hilfe bei Fragen rund um Microsoft® Office und VBA Makros

Der Quick E-Mail Support von WershovenOnline® 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...

Zum Seitenanfang