Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Über Excel einen Word-Serienbrief drucken
#1
Ich habe eine Excel-Tabelle mit einer Userform. In die Userform werden Rechnungsdaten eingegeben, die ich dann an ein Worddokument übergeben und drucken möchte.

Zur Zeit läuft es so, dass nach Eingabe der Daten das Worddokument aufgerufen wird und alles weitere über Word bearbeitet bzw. gedruckt und gespeichert wird.

Mit folgendem Code öffne ich das Worddokument:

Dim objWordApp As Object
Dim wdDok As Object
Dim strPfad As String

strPfad = ThisWorkbook.Path & "\Vordrucke\Rechnung.docx"
Debug.Print Dir(strPfad)
Set objWordApp = CreateObject("Word.application")
With objWordApp
        .Visible = True
        .Activate
        Set wdDok = .Documents.Open(strPfad)
End With
   

wdDok.MailMerge.OpenDataSource _
        Name:=ThisWorkbook.Path & "\Dezernat_34_ESF-Berabeitung.xlsm", _
        ReadOnly:=True, _
        Connection:="Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Extended Properties='Excel 12.0 Macro';HDR=YES;", _
        SQLStatement:="SELECT * FROM [Ausgabe$]"
Set objWordApp = Nothing
End Sub

Ich möchte den Code jetzt so erweitern, dass nicht nur das Dokument geöffnet wird, sondern das Dokument gedruckt und die Wordapplikation wieder geschlossen wird.
Habe am Wochenende schon so einige Codevarianten ausprobiert, aber so richtig funktioniert hat es nicht.
Drucken konnte ich zwar, aber es wurde "nur" die Entwurfansicht ohne die aktualisierten Serienbrieffelder gedruckt.

Hat vielleicht jemand ein Codebeispiel für mich?
Gruß
Royalty
Antworten Top
#2
Moin,

den Seriendruck führst du in Word mit .Execute() I'm Mailmerge-Objekt aus. Damit das Ziel der Drucker ist, musst du vorher die .Destination-Eigenschaft setzen.

Falls du nicht direkt an den Drucker senden willst, sondern in ein frisches Dokument, musst du zusätzlich beachten, dass du das neue Dokument erst aus der Documents-Auflistung raussuchen musst.

Viele Grüße
derHöpp
Antworten Top
#3
Dim objWordApp As Object
Dim wdDok As Object
Dim strPfad As String

strPfad = ThisWorkbook.Path & "\Vordrucke\Rechnung.docx"
Debug.Print Dir(strPfad)
Set objWordApp = CreateObject("Word.application")
With objWordApp
        .Visible = True
        .Activate
        Set wdDok = .Documents.Open(strPfad)
End With
wdDok.MailMerge.OpenDataSource _
        Name:=ThisWorkbook.Path & "\Dezernat_34_ESF-Berabeitung.xlsm", _
        ReadOnly:=True, _
        Connection:="Provider=Microsoft.ACE.OLEDB.12.0;" & _
        "Extended Properties='Excel 12.0 Macro';HDR=YES;", _
        SQLStatement:="SELECT * FROM [Ausgabe$]"
Set objWordApp = Nothing

wdDok.MailMerge.Destination = wdSendToPrinter
wdDok.MailMerge.Execute

End Sub

Jetzt wird das Dokument zwar gedruckt, aber der Druckauftrag wird "unendlich" eingefügt und der Befehl "wdDok.MailMerge.Execute" wird als "Fehler" makiert.

Gruß
Royalty
Antworten Top
#4
Hi,

hast du berücksichtigt, dass du für das SQL-Statement die Anführungszeichen Doppeln musst? Und ist dir bewusst, dass die Konstante wdSendToPrinter den Wert 1 haben muss, wenn du die Word-Klassenbibliothek nicht als Verweis in deinen Code eingebunden hast?

Einen "unendlichen" Druckauftrag kann ich nicht nachvollziehen. Bei mir gibt es auch keinen Fehler. Welcher Fehler wird dir angegeben?

Viele Grüße
derHöpp
Antworten Top
#5
Wenn ich den Code, wie angegeben, ausführe, passiert folgendes:

1. Excel startet Word
2. öffnet das Worddokument
3. Das Dialogfenster "drucken" öffnet sich und ich sehe, wie der Druckauftrag unendlich an den Drucker geschickt wird. Hier kann ich nur abbrechen drücken, um dieses zu stoppen.

Die Fehlermeldung kommt sofort nachdem ich den Druck abbreche. Laufzeitfehler 5535 Diese Dokumente kontten in Word nicht vollständig zusammengeführt werden.

Der erste Ausdruck ist dann auch korrekt, wobei die weiteren Ausdrucke dann leer sind, vermutlich, weil der Druckbefehl "leere" Datensätze aus der Exceltabelle übergibt. Dabei habe ich eigentlich nur einen Datensatz, der eingefügt wird.
Antworten Top
#6
Zitat:Dabei habe ich eigentlich nur einen Datensatz, der eingefügt wird.

Würde ich kein 'Serien'druck nennen.
Dazu gibt es einfachere Methoden.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#7
(08.05.2023, 16:41)snb schrieb: Würde ich kein 'Serien'druck nennen.
Dazu gibt es einfachere Methoden.

 Welche "einfachere" Methode gibt es denn?
Antworten Top
#8
Verwendung von DocVariable-fields.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top
#9
Die Excel-Tabelle wird für Berechnungen benötigt, wobei die Ergebnisse dann in das Word-Dokument übergeben werden sollen. Ich kenn mich jetzt mit DocVariable-fields nicht so aus, aber nachdem was ich bisher gelesen habe, scheint das für mich keine Lösung zu sein.

Grundsätzllich muß ich jetzt nur eine Lösung finden, wie ich den Druck, der ja jetzt funktioniert, nicht "unendlich" durch läuft.
Sollte doch irgendwie möglich sein.

Letztendlich möchte ich ja nur, dass nach Eingabe in die Userform, das Dokument direkt gedruckt wird, also der Zwischenschritt mit der Bearbeitung wegfällt. Ziel ist ein Ausdruck, den der Anwender zwischendurch nicht mehr ändern kann, sondern nur den fertigen Ausdruck bekommt
Antworten Top
#10
Zitat:Ich kenn mich jetzt mit DocVariable-fields nicht so aus, aber nachdem was ich bisher gelesen habe, scheint das für mich keine Lösung zu sein.

Dann ist besser lesen die Lösung, denn die Verwendung von {DOCVARIABLE} fields ist ohne Zweifel die beste Lösung.
Zum übersetzen von Excel Formeln:

http://dolf.trieschnigg.nl/excel/index.p...gids=en+de
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste