VBA für Office: Daten aus Excel automatisiert in Word einfügen
Viele repetitive und zeitraubende Aufgaben in Office lassen sich mit VBA automatisieren. Am Beispiel eines Serienbriefs zeigt VBA-Trainer Jörn Schramm, wie Sie Excel-Inhalte mit einem Klick in Word importieren.
Sie verfügen über eine Liste mit Adressen, die in einer Excel-Arbeitsmappe gespeichert ist. Für einen Serienbrief möchten Sie auf diese Daten zurückgreifen, ohne dass Sie die Adressen Zeile für Zeile manuell in Word einfügen müssen.
Das geht. Mit ein wenig Programmier-Kenntnissen in VBA (Visual Basic for Applications) lässt sich jede Adresse mit einem Klick in den Adressteil der Word-Vorlage einspielen. Trainer Jörn Schramm führt Sie Schritt für Schritt durch die Übung.
Anleitung: Adressen mit VBA automatisiert in Word importieren
Die folgende Abbildung zeigt einen Auszug aus einer Liste mit Adressen. (Alle Adressen sind frei erfunden und jede Ähnlichkeit mit echten Adressen wäre rein zufällig.)
Die aktive Zelle ist A10. Es soll ein Brief an die Adresse dieser Zeile geschrieben werden.
1 Textmarken definieren
Damit per Programm Informationen an exakten Positionen in einem Word-Dokument platziert werden können, müssen diese Positionen gekennzeichnet werden. Hierzu werden Textmarken verwendet.
Hierbei unterscheidet man Positions-Textmarken, welche nur durch die jeweilige Position der Schreibmarke bestimmt werden; diese sind später im Dokument aber nur erkennbar, wenn dies in den Word-Optionen so eingestellt ist.
Für eine spätere Bearbeitung eines Dokuments sind Inhalts-Textmarken besser handhabbar: Sie enthalten bereits einen aussagefähigen Text und werden durch das Programm später überschrieben.
In der bereits vorbereiteten Dokumentvorlage sollen für die Positionen, in denen im Moment «Anschrift», «Datum» und «Betreff» stehen, Textmarken definiert werden.
Hierzu werden die Texte jeweils markiert und über die Registerkarte «Einfügen»/»Textmarke» die entsprechenden Textmarken eingefügt. Damit sind die Arbeiten an der Word-Vorlage erledigt.
Da das Programm von Excel aus gestartet werden soll, müssen wir Excel aber noch beibringen, dass es auch ein Word gibt; für den Zugriff auf das Word-Dokument fehlen im Excel-VBA sonst die Anweisungen.
2 Auf Word Object Library verweisen
Hierzu ist es notwendig, einen Verweis auf die Word-Bibliothek zu setzen. Über «Extras>/»Verweise» muss diese eingebunden werden.
Nun beginnt die eigentliche VBA-Programmierung.
3 Variable deklarieren:
Dim lngZeile As Long
Dim strAdresse As String
Dim strBetreff As String
Ein Word-Objekt erstellen
Dim objWord As New Word.Application
4 Word sichtbar machen
objWord.Visible = True
Ein neues Word-Dokument auf Basis der Vorlage erstellen
objWord.Documents.Add "Office Tools AG Brief.dotx"
Sicher stellen, dass das richtige Tabellenblatt aktiv ist
Sheets("Adressliste").Activate
5 Ermitteln der Zeile mit der aktiven Zelle
lngZeile = ActiveCell.Row
Adresse zusammenbauen; vbNewLine erzeugt einen Zeilenumbruch
strAdresse = Cells(lngZeile, 1) & vbNewLine & Cells(lngZeile, 3) & " " & Cells(lngZeile, 2) _
& vbNewLine & Cells(lngZeile, 4) & vbNewLine & Cells(lngZeile, 5) & " " & Cells(lngZeile, 6)
6 Betreff abfragen
strBetreff = InputBox("Betreff eingeben:", "Brief schreiben", "Bitte hier den Betreff...")
7 Textmarken bestücken
objWord.ActiveDocument.Bookmarks("Anschrift").Range.Text = strAdresse
objWord.ActiveDocument.Bookmarks("Datum").Range.Text = Date
objWord.ActiveDocument.Bookmarks("Betreff").Range.Text = strBetreff
Fertig!
Weitere Blog-Beiträge von unseren Trainern zum Thema VBA:
Empfohlenes Kursangebot in VBABootcamp: Microsoft Visual Basic for Applications (VBA) («BCVBA1») Die umfassende Weiterbildung für angehende VBA-Programmierer. Mehr erfahren Tageskurse:
|
Bootcamp: Microsoft Visual Basic for Applications (VBA) («BCVBA1»)
Die umfassende Weiterbildung für angehende VBA-Programmierer. Mehr erfahren
Tageskurse:
- VBA-Vertiefung für Word («VBWRD») Mehr erfahren
- Visual Basic for Applications (VBA) Refresher («VBREFR») Mehr erfahren