Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Word Textmarken dynamisch befüllen

Forumthread: Word Textmarken dynamisch befüllen

Word Textmarken dynamisch befüllen
16.12.2019 13:46:40
Lukas
Hallo zusammen,
ich möchte eine Word Vorlage über ein Excel Makro befüllen. Das Makro dafür sieht (in Auszügen) so aus:
Set wrdApp = CreateObject("Word.Application")
Set wrdDoc = wrdApp.Documents.Open(Vorlage)
...
wrdDoc.Bookmarks("Name").Range.InsertAfter Range("B3").Value
wrdDoc.Bookmarks("Straße").Range.InsertAfter Range("C3").Value
wrdDoc.Bookmarks("Stadt").Range.InsertAfter Range("D3").Value
wrdDoc.Bookmarks("Heute").Range.InsertAfter Range("A1").Value
wrdDoc.Bookmarks("Rechnung").Range.InsertAfter Range("A3").Value
wrdDoc.Bookmarks("Datum").Range.InsertAfter Range("E3").Value
wrdDoc.Bookmarks("Fällig").Range.InsertAfter Range("F3").Value
wrdDoc.Bookmarks("letztesDatum").Range.InsertAfter Range("G3").Value
wrdDoc.Bookmarks("Betrag").Range.InsertAfter Range("H3").Text
wrdDoc.Bookmarks("Gebühr").Range.InsertAfter Range("I3").Text
wrdDoc.Bookmarks("Summe").Range.InsertAfter Range("J3").Text
...
wrdApp.activedocument.SaveAs Filename:=Pfad & "Erste Mahnung " & Dateiname & " " & Rechnung & ".docx"
Das funktioniert soweit auch wunderbar!
Nun habe ich allerdings eine relative große Liste aus der mehrere Word Dokumente erstellt werden müssen. Diese befindet sich dann z.B. von A1:J20 (letzte Zeile muss vom Makro dann jeweils erfasst vorher definiert werden). Hat jemand eine Ahnung, wie ich die einzelnen Dokumente mit den jeweilen Textmarken (über eine Schleife) erstellen kann?
Vielen Dank vorab und beste Grüße,
Lukas
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Word Textmarken dynamisch befüllen
16.12.2019 14:06:54
fcs
Hallo Lukas,
ungetestet etwa wie folgt.
LG
Franz
Sub FillWordDocuments()
Set wrdApp = CreateObject("Word.Application")
For Zeile = 3 To ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
Set wrdDoc = wrdApp.Documents.Open(Vorlage)
wrdDoc.Bookmarks("Name").Range.InsertAfter Range("B" & Zeile).Value
wrdDoc.Bookmarks("Straße").Range.InsertAfter Range("C" & Zeile).Value
wrdDoc.Bookmarks("Stadt").Range.InsertAfter Range("D" & Zeile).Value
wrdDoc.Bookmarks("Heute").Range.InsertAfter Range("A1").Value
wrdDoc.Bookmarks("Rechnung").Range.InsertAfter Range("A" & Zeile).Value
wrdDoc.Bookmarks("Datum").Range.InsertAfter Range("E" & Zeile).Value
wrdDoc.Bookmarks("Fällig").Range.InsertAfter Range("F" & Zeile).Value
wrdDoc.Bookmarks("letztesDatum").Range.InsertAfter Range("G" & Zeile).Value
wrdDoc.Bookmarks("Betrag").Range.InsertAfter Range("H" & Zeile).Text
wrdDoc.Bookmarks("Gebühr").Range.InsertAfter Range("I" & Zeile).Text
wrdDoc.Bookmarks("Summe").Range.InsertAfter Range("J" & Zeile).Text
wrdDoc.SaveAs Filename:=Pfad & "Erste Mahnung " & Dateiname & " " & Rechnung & ".docx"
wrdDoc.Close
Next Zeile
wrdApp.Quit '?
End Sub

Anzeige
AW: Word Textmarken dynamisch befüllen
16.12.2019 15:33:28
Lukas
Danke Franz, funktioniert soweit super! War ja doch einfacher als gedacht... Leider schließt er am Ende des Makros die Word Instanzen nicht. Die Dokumente werden geschlossen, aber ich habe alle Fenster in Word offen (ohne Inhalt, nur das Word Startmenü).
Weder mit wrdApp.Quit noch mit wrdApp.Application.Quit werden diese geschlossen. Eine Idee woran das liegen könnte bzw. wie ich das beheben kann?
Danke vorab!
Lukas
Anzeige
AW: Word Textmarken dynamisch befüllen
16.12.2019 15:43:22
Lukas
Hat sich geklärt, ich hatte "Set wrdApp = CreateObject("Word.Application")" innerhalb der Schleife stehen. Ich habe es vor die Schleife gezogen und nun passt alles. :)
Vielen Dank!
AW: Word Textmarken dynamisch befüllen
16.12.2019 15:43:25
Lukas
Hat sich geklärt, ich hatte "Set wrdApp = CreateObject("Word.Application")" innerhalb der Schleife stehen. Ich habe es vor die Schleife gezogen und nun passt alles. :)
Vielen Dank!
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

Word Textmarken dynamisch aus Excel befüllen


Schritt-für-Schritt-Anleitung

Um Word Textmarken dynamisch aus Excel zu befüllen, kannst Du das folgende VBA-Makro verwenden. Dieses Beispiel geht davon aus, dass Du eine Word-Vorlage hast und die entsprechenden Daten in einem Excel-Arbeitsblatt stehen.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu über Einfügen > Modul.
  3. Kopiere und füge den folgenden Code ein:
Sub FillWordDocuments()
    Dim wrdApp As Object
    Dim wrdDoc As Object
    Dim Vorlage As String
    Dim Pfad As String
    Dim Dateiname As String
    Dim Rechnung As String

    ' Setze hier den Pfad zur Word-Vorlage und weitere Variablen
    Vorlage = "C:\Pfad\Zur\Vorlage.docx"
    Pfad = "C:\Pfad\Zur\Speicherung\"
    Dateiname = "MeinDokument"
    Rechnung = "Rechnung"

    Set wrdApp = CreateObject("Word.Application")

    For Zeile = 3 To ActiveSheet.Cells(ActiveSheet.Rows.Count, 1).End(xlUp).Row
        Set wrdDoc = wrdApp.Documents.Open(Vorlage)
        wrdDoc.Bookmarks("Name").Range.InsertAfter Range("B" & Zeile).Value
        wrdDoc.Bookmarks("Straße").Range.InsertAfter Range("C" & Zeile).Value
        wrdDoc.Bookmarks("Stadt").Range.InsertAfter Range("D" & Zeile).Value
        wrdDoc.Bookmarks("Heute").Range.InsertAfter Range("A1").Value
        wrdDoc.Bookmarks("Rechnung").Range.InsertAfter Range("A" & Zeile).Value
        wrdDoc.Bookmarks("Datum").Range.InsertAfter Range("E" & Zeile).Value
        wrdDoc.Bookmarks("Fällig").Range.InsertAfter Range("F" & Zeile).Value
        wrdDoc.Bookmarks("letztesDatum").Range.InsertAfter Range("G" & Zeile).Value
        wrdDoc.Bookmarks("Betrag").Range.InsertAfter Range("H" & Zeile).Text
        wrdDoc.Bookmarks("Gebühr").Range.InsertAfter Range("I" & Zeile).Text
        wrdDoc.Bookmarks("Summe").Range.InsertAfter Range("J" & Zeile).Text
        wrdDoc.SaveAs Filename:=Pfad & "Erste Mahnung " & Dateiname & " " & Rechnung & ".docx"
        wrdDoc.Close
    Next Zeile

    wrdApp.Quit
End Sub
  1. Passe die Variablen Vorlage, Pfad, Dateiname und Rechnung entsprechend an.
  2. Führe das Makro aus, um die Word Dokumente zu generieren.

Häufige Fehler und Lösungen

  • Problem: Word-Anwendung bleibt offen.

    • Lösung: Stelle sicher, dass Set wrdApp = CreateObject("Word.Application") außerhalb der Schleife steht. Wenn es innerhalb der Schleife steht, wird bei jedem Durchlauf eine neue Instanz erstellt.
  • Problem: Textmarken existieren nicht.

    • Lösung: Überprüfe, ob die Textmarken in der Word-Vorlage korrekt benannt sind und mit den im Code verwendeten Namen übereinstimmen.

Alternative Methoden

Neben VBA kannst Du auch andere Methoden verwenden, um Word Textmarken aus Excel zu befüllen. Eine Möglichkeit ist die Verwendung von Power Automate, um automatisierte Workflows zu erstellen, die Excel-Daten direkt in Word-Dokumente übertragen.


Praktische Beispiele

Angenommen, Du hast eine Excel-Tabelle mit den folgenden Daten:

Name Straße Stadt Heute Rechnung Datum Fällig letztesDatum Betrag Gebühr Summe
Max Hauptstr. 1 Berlin 01.01.2023 12345 01.02.2023 15.02.2023 01.03.2023 100 5 105

Mit dem obigen Makro werden für jede Zeile ein entsprechendes Word-Dokument erstellt, das die Textmarken mit den Werten aus der Excel-Tabelle füllt.


Tipps für Profis

  • Fehlerbehandlung einfügen: Implementiere Fehlerbehandlungsroutinen, um potenzielle Probleme beim Öffnen oder Speichern von Word-Dokumenten abzufangen.
  • Leistungsoptimierung: Wenn Du viele Dokumente generierst, setze wrdApp.Visible = False, um die Ausführungsgeschwindigkeit zu erhöhen.

FAQ: Häufige Fragen

1. Frage
Wie kann ich mehrere Excel-Tabellen gleichzeitig in Word-Dokumente übertragen?
Antwort: Du kannst die oben gezeigte Methode anpassen, um durch mehrere Arbeitsblätter oder Dateien zu iterieren.

2. Frage
Welche Excel-Version benötige ich?
Antwort: Das Beispiel ist in VBA und funktioniert mit Excel 2010 und höher, die VBA unterstützen.

3. Frage
Kann ich das Makro anpassen, um selektive Zeilen zu verarbeiten?
Antwort: Ja, Du kannst Bedingungen in die Schleife einfügen, um nur bestimmte Zeilen zu verarbeiten.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige