Startseite Inhaltsverzeichnis Nutzungsbedingungen Datenschutz Impressum Weitere Informationen

TUTORIAL

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

VBA und Makros • Codeschnipsel • Vorlage • Tabelle • Automatisierung • Schritt für Schritt

Ausgangslage ... Was tut der Codeschnipsel?

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.

VBAVBA Codeschnipsel
XLSQuelltext zur Verwendung mit Microsoft® Excel®
DOCQuelltext zur Verwendung mit Microsoft® Word®
DLOptional mit Beispieldatei(en) zum Download
TUTTutorials

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
 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.
X Abbildung 1 - Die Vorlagendatei mit Textmarken

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.
X Abbildung 2 - Die Eingabemaske UserForm1

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
' ****************************************************************
' Autor/en und Original-Quelltext unter:
' https://www.online-vba.de/vba_tutorialvorlage.php
' Verwendung der Quelltexte auf eigene Gefahr!
' Es gelten die Nutzungsbedingungen von https://www.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

PERSONAL-COACHING IN VBA?

ANZEIGE
Vervollständigen Sie Ihre Weiterbildung und erweitern Sie Ihr Wissen mit unseren professionellen Schulungen! Erhalten Sie Zugang zu wertvollen zusätzlichen Tipps und Lehrmaterial, das Ihnen hilft, Ihre Fähigkeiten auszubauen und selbst ein VBA-Profi zu werden. Unser exklusives Angebot bietet Ihnen außerdem die Möglichkeit, tiefer in ein spezifisches Thema Ihrer Wahl einzusteigen. Unser Personal-Training rund um VBA ist genau die richtige Ergänzung, um theoretische Aspekte gemeinsam in der Praxis anzuwenden und umzusetzen. Wir unterstützen und beraten Sie ebenfalls bei der VBA Programmierung in Ihren eigenen Projekten und stehen Ihnen mit Rat und Tat zur Seite. Setzen Sie sich einfach mit uns in Verbindung. Sie finden uns auf unserer Internetseite:

WershovenOnline.de

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"

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

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!
X 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!

PROGRAMIERER GESUCHT? ... UND GEFUNDEN!

ANZEIGE
Sie möchten komplexere oder umfangreichere Funktionen in Ihre VBA-Makros und Tools einbauen? Sie suchen einen Programmierer, der Ihre Ideen in die Tat umsetzt?

Sie haben uns gefunden! Unsere individuellen Auftragsprogrammierungen sind maßgeschneiderte Lösungen für Ihre spezifischen Anforderungen. Wir arbeiten eng mit Ihnen zusammen, um sicherzustellen, dass unsere Lösungen perfekt auf Ihre Bedürfnisse abgestimmt sind und Sie Ihre Wunsch-Software erhalten.

Kontaktieren Sie uns noch heute und lassen Sie uns gemeinsam Ihre individuelle Programmierung erstellen! Sie finden uns auf unserer Internetseite:

WershovenOnline.de

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
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®)

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!

Anmerkungen und Hinweise ...

Dieser Codeschnipsel wurde geschrieben von Marc Wershoven im Jahr 2014.
Es gelten die Nutzungsbedingungen von Online-VBA.de.
TOTOP
ANZEIGE