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

Forumthread: Word Vorlage aus Excel VBA füllen

Word Vorlage aus Excel VBA füllen
15.03.2017 14:54:22
Flo
Hallo zusammen,
ich hab mal wieder eine Problem. Ich möchte aus einer Excelliste einen Brief erstellen.
Ich hab einen Ansatz gefunden und auch schon angepasst, nur ist die Laufzeit vom Makro etwas lang.
Momentan wird das Word Dokument im Hintergrund geöffnet und sofort ausgedruckt,
allerdings kommt beim schließen ein Meldung "bitte abwarten bis Ausdruck abgeschlossen"
Gibt es eine Möglichkeit das zu unterdrücken bzw. dies zu beschleunigen.
Es kann zudem vorkommen, dass mehrere Personen gleichzeitig dieses Schreiben drucken wollen, dadurch kommt eine Meldung "Dokument schreibgeschützt öffnen"
das sollte auch unterdrückt werden.
Super ware auch wenn man mehrere Zeilen markiert, dass dann für alle markierten Zeilen die Briefe gedruckt warden :)
Könnt ihr mir hier einen Tip geben wie ich das alles lösen kann?
Vielen Dank :)
Gruß Flo
Sub Test2()
Dim wrdApp
Dim wrdDoc
Dim Pfad As String
Pfad = "D:\test.docx"
On Error GoTo ErrorExit
Set wrdApp = CreateObject("Word.Application")
Set wrdDoc = wrdApp.Documents.Open(Pfad)
wrdApp.Visible = False
wrdDoc.FormFields("Text1").Result = Cells(ActiveCell.Row, 1)     'Kundenname
wrdDoc.FormFields("Text2").Result = Cells(ActiveCell.Row, 2)     'Strasse
wrdDoc.PrintOut
wrdDoc.Saved = False
wrdDoc.Close
ErrorExit:
wrdApp.Quit
Set wrdDoc = Nothing
Set wrdApp = Nothing
End Sub

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Word Vorlage aus Excel VBA füllen
15.03.2017 16:31:28
Michael
Hallo!
Bzgl. Meldung "bitte abwarten bis Ausdruck abgeschlossen" unterdrücken
Da hilft evtl. vor dem PrintOut ein
wrdApp.DisplayAlerts = wdAlertsNone
einzufügen bzw. evtl. auch das Drucken im Hintergrund aktivieren
 wrdDoc.PrintOut Background:=True
(beides ungetestet).
Bzgl. mehrere Personen gleichzeitig
Da ist die Frage, ob das Word-Dokument nicht als Word-Dokumentenvorlage (.dotx) eingerichtet werden kann; dann ist der mehrfache Zugriff egal.
LG
Michael
Anzeige
AW: Word Vorlage aus Excel VBA füllen
21.03.2017 12:34:15
Flo
Hallo Michael,
ich habe mein Makro jetzt nochmal überarbeitet.
Funktioniert soweit, die Meldung beim Drucken erscheint leider noch.
Darum habe ich jetzt ein Application.Wait Now + TimeSerial(0, 0, 3) eingefügt.
Wenn Word zudem schon geöffnet ist, z.B. mit einem anderen Dokument dann wird dieses auch geschlossen.
Kann man das unterbinden?
Mein Makro sieht momentan so aus:
Sub Anschreiben()
Dim wrdApp As Object, wrdDoc As Object, strTemp As String
strTemp = "D:\test_2.0.dotx" 'Pfad zur Vorlage
On Error Resume Next
Set wrdApp = GetObject(, "Word.Application")
If wrdApp Is Nothing Then
Set wrdApp = CreateObject("Word.Application")
End If
With wrdApp
Set wrdDoc = .documents.Add(strTemp) 'Neues Dokument auf Basis der Vorlage erstellen
.Visible = False 'WORD-Fenster anzeigen
End With
wrdDoc.FormFields("Text1").Result = Cells(ActiveCell.Row, 1)     'Kundenname
wrdDoc.FormFields("Text2").Result = Cells(ActiveCell.Row, 2)     'Strasse
wrdDoc.PrintOut Background:=True
Application.Wait Now + TimeSerial(0, 0, 3)
wrdDoc.Saved = True
wrdDoc.Close
wrdApp.Quit
Set wrdDoc = Nothing
Set wrdApp = Nothing
End Sub

Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Word Vorlage aus Excel VBA füllen


Schritt-für-Schritt-Anleitung

Um eine Word Vorlage aus Excel VBA zu füllen, folge diesen Schritten:

  1. Öffne Excel und aktiviere die Entwicklertools:

    • Gehe zu „Datei“ > „Optionen“ > „Menüband anpassen“ und aktiviere die Entwicklertools.
  2. Erstelle das VBA-Makro:

    • Öffne den VBA-Editor mit ALT + F11.
    • Füge ein neues Modul hinzu und kopiere den folgenden Code:
    Sub Anschreiben()
       Dim wrdApp As Object, wrdDoc As Object, strTemp As String
       strTemp = "D:\test_2.0.dotx" 'Pfad zur Vorlage
       On Error Resume Next
       Set wrdApp = GetObject(, "Word.Application")
       If wrdApp Is Nothing Then
           Set wrdApp = CreateObject("Word.Application")
       End If
       With wrdApp
           Set wrdDoc = .Documents.Add(strTemp) 'Neues Dokument auf Basis der Vorlage erstellen
           .Visible = False 'WORD-Fenster anzeigen
       End With
       wrdDoc.FormFields("Text1").Result = Cells(ActiveCell.Row, 1)     'Kundenname
       wrdDoc.FormFields("Text2").Result = Cells(ActiveCell.Row, 2)     'Strasse
       wrdDoc.PrintOut Background:=True
       Application.Wait Now + TimeSerial(0, 0, 3)
       wrdDoc.Saved = True
       wrdDoc.Close
       wrdApp.Quit
       Set wrdDoc = Nothing
       Set wrdApp = Nothing
    End Sub
  3. Füge die benötigten Formularelemente in Word hinzu:

    • Stelle sicher, dass die Platzhalter „Text1“ und „Text2“ in deiner Word Dokumentenvorlage vorhanden sind.
  4. Führe das Makro aus:

    • Wähle die entsprechende Zeile in Excel aus und führe das Makro aus.

Häufige Fehler und Lösungen

  • Meldung "bitte abwarten bis Ausdruck abgeschlossen":

    • Füge vor dem PrintOut-Befehl wrdApp.DisplayAlerts = wdAlertsNone ein, um die Meldungen zu unterdrücken.
  • Dokument schreibgeschützt öffnen:

    • Verwende eine Word-Dokumentenvorlage (.dotx), um mehrere Zugriffe zu ermöglichen.
  • Makro läuft langsam:

    • Überprüfe, ob der Druckvorgang im Hintergrund (Background:=True) korrekt implementiert ist.

Alternative Methoden

  • Excel Userform Vorlagen:

    • Erstelle eine Userform in Excel, um Eingaben zu sammeln und dann die Word-Vorlage zu befüllen.
  • VBA Excel Word:

    • Nutze die Word.Application-Klasse, um Word-Dokumente direkt aus Excel zu automatisieren.
  • Word Combobox füllen:

    • Wenn du ein Dropdown-Feld in Word hast, kannst du dieses ebenfalls durch dein VBA-Skript befüllen.

Praktische Beispiele

Hier ist ein Beispiel, wie Du eine Word Vorlage mit Makros aus Excel befüllen kannst:

Sub FillWordTemplate()
    Dim wrdApp As Object
    Dim wrdDoc As Object
    Dim templatePath As String
    templatePath = "D:\Vorlage.dotx"

    Set wrdApp = CreateObject("Word.Application")
    Set wrdDoc = wrdApp.Documents.Open(templatePath)

    ' Adressfeld Word füllen
    wrdDoc.FormFields("Kundenname").Result = "Max Mustermann"
    wrdDoc.FormFields("Strasse").Result = "Musterstraße 1"

    wrdDoc.PrintOut
    wrdDoc.Close False
    wrdApp.Quit
End Sub

Tipps für Profis

  • Verwende VBA Vorlagen:

    • Speichere häufig genutzte Makros als Vorlagen, um die Wiederverwendbarkeit zu erhöhen.
  • Fehlerbehandlung:

    • Implementiere eine umfassende Fehlerbehandlung in deinem Makro, um unerwartete Probleme zu lösen.
  • Performance optimieren:

    • Deaktiviere die Bildschirmaktualisierung mit Application.ScreenUpdating = False, um die Ausführungsgeschwindigkeit zu erhöhen.

FAQ: Häufige Fragen

1. Wie kann ich mehrere Briefe gleichzeitig drucken?
Du kannst eine Schleife in dein Makro einfügen, die über die markierten Zeilen iteriert und für jede Zeile den Druckvorgang ausführt.

2. Was ist der Unterschied zwischen .dotx und .docx?
Eine .dotx-Datei ist eine Word-Vorlage, die mehrere Instanzen des Dokuments zulässt, während .docx für ein einzelnes Dokument steht, das nicht mehrfach geöffnet werden kann.

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