Worddatein aus Excel ausdrucken

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
MsgBox
Bild

Betrifft: Worddatein aus Excel ausdrucken
von: Peter Weber
Geschrieben am: 21.10.2015 18:22:31

Hallo zusammen,
ich bitte wieder um eure Hilfe.
1. Herausforderung
Ich habe in einem Ordner C:/Test Worddateien die ich gern direkt aus dem Ordner ausdrucken (also ohne sie zu öffnen). Im Windows-Explorer geht es recht einfach. Ordner öffnen - Datei markieren - rechte Maustaste - Drucken.
Leider nimmt der Makrorekorder diese einzelnen Schritte nicht auf.
Wie müsste der Code dazu aussehen?
2. Herausforderung
Weiß jemand von euch, ob es möglich ist per VBA das Menu "Datei" dann "Drucken" zu öffnen, die Druckeinstellungen manuell verändern und dann dieses Menu wieder per VBA zu schließen wenn die Veränderungen durchgeführt wurden. Oder gibt es sogar eine direkte Möglichkeit die Druckeinstellungen per VBA zu ändern.
Letztendlich möchte ich die o.g. Worddateien auf einem zweiten Drucker, der beidseitig drucken kann, ausdrucken.
Jede Hilfe ist willkommen.
LG, Peter

Bild

Betrifft: AW: Worddatein aus Excel ausdrucken
von: Michael
Geschrieben am: 21.10.2015 18:43:16
Hi Peter,
vielleicht hilft Dir das weiter:
http://www.administrator.de/frage/word-document-durch-batch-drucken-48944.html
Da steht:
normalerweise sollte unter HKEY_CLASSES_ROOT\Word.Document.8\shell\Print\command stehen, was passiert, wenn der Benutzer im Explorer bei einem Word-Dokoment "Drucken" anklickt.
Das ist dann meist etwas wie

"C:\Programme\Microsoft Office\OFFICE11\WINWORD.EXE" /x /n /dde
Damit (+den Dateinamen als Parameter) würde ich zuerst experimentieren.
Das kann man dann via Shell aufrufen.
Mit der Druckerwahl... Evtl. den Duplex-Drucker zuvor auf "Standard" setzen.
Schöne Grüße,
Michael

Bild

Betrifft: Nachtrag
von: Michael
Geschrieben am: 21.10.2015 18:47:50
Hier z.B. alle Parameter: https://support.microsoft.com/en-us/kb/210565
Gesucht hatte ich nach "winword.exe parameter" oder so.
Vielleicht ist es auch nicht verkehrt, wenn Du nach word vba drucken suchst; kann sein, die Sache läßt sich easy als Word-Makro lösen - und hier geht denn auch der Makrorekorder.

Bild

Betrifft: AW: Nachtrag
von: Peter Weber
Geschrieben am: 22.10.2015 10:24:48
Hallo Michael,
anbei ein Teil meines Codes.
In der Zeile:


wordapp.ActiveDocument.PrintOut ....
erhalte ich einen Laufzeitfehler 4608 - Wert nicht im Definitionsbereich.
Kann mir jemand hier weiter helfen?
    For i = 8 To lz
        If Cells(i, 4) > 0 Then
        vAnzahAusdrucke = Cells(i, 4)
        Produkt = P(i - 7)          'Namen der Worddokumente, wurden vorher zugeordnet
        wordapp.Documents.Open Filename:=PfadTDB & Produkt & ".docx"
        wordapp.ActiveDocument.PrintOut Copies:=vAnzahAusdrucke, Pages:="", PageType:= _
        wdPrintAllPages, Collate:=True, Background:=True, PrintToFile:=False, _
        PrintZoomColumn:=0, PrintZoomRow:=0, PrintZoomPaperWidth:=0, _
        PrintZoomPaperHeight:=0
        
     
        wordapp.ActiveDocument.Close
        End If
        Zähler = Zähler + 1
    Next i
LG,
peter

Bild

Betrifft: AW: Nachtrag
von: Peter Weber
Geschrieben am: 23.10.2015 10:26:39
Liebes Forum,
hat jemand von Euch einen weiteren Tip dazu. Lasse ich den Rest der Zeile weg

wordapp.ActiveDocument.PrintOut Copies:=vAnzahAusdrucke
dann wird die Word-Datei ausgedruckt aber nicht doppelseitig.
Gibt es einen Befehl, damit das Worddokument doppelseitig ausgedruckt wird?
Lg,
Peter

Bild

Betrifft: Recherche
von: Michael
Geschrieben am: 23.10.2015 14:55:02
Hi Peter,
die Geschichte ist offensichtlich nicht sooo einfach.
Den 4608 könntest Du evtl. mal verfolgen, indem Du den Code zeilenweise mit F8 durchgehst; oder laß Dir mal das vAnzahlausdrucke in einer msgbox ausgeben. Kann es sein, daß da Zahlen als TEXT in der Zelle stehen?
Ich habe mal ne Runde recherchiert: word vba drucken duplex
Es finden sich mehrere Lösungsansätze bei office-loesung, z.B. das Anlegen einer Kopie des Druckertreibers, die auf Duplex voreingestellt ist. Lies Dich halt mal durch.
Die Profi-Erklärung bzw.- Lösung findet sich da...
https://support.microsoft.com/de-de/kb/230743
Word-VBA hat offensichtlich keinen "direkten" Schalter für den Duplexdruck, derweil letzterer unter den Druckereigenschaften (dem Drucker-eigenen Dialog) festgelegt wird - deshalb wird er auch im Makro-Rekorder nicht aufgezeichnet.
Auf dieser support-Seite befindet sich ein Makro-Beispiel mit API-Zugriff, das den Duplexdruck über die Tiefen des Systems (kernel32.dll) anwirft.
Zwischendrin scheint es nichts zu geben.
Zu APIs kannst Du Dich hier informieren: http://www.online-excel.de/excel/singsel_vba.php?f=37
Schöne Grüße,
Michael

Bild

Betrifft: AW: Recherche
von: Peter Weber
Geschrieben am: 23.10.2015 18:13:05
Hallo Michael,
vielen Dank für deine Antwort.
Es ist so, dass ich den Server-Drucker bereits ansprechen kann.
Die Worddokumete werden auch ausgedruckt, nur eben nicht als Duplex.
Von den Profi-Lösungen lasse ich als Laie die Finger von. Ich könnte damit zu viel zerstören und das möchte ich nicht. Da es wohl keine einfache Lösung dazu gibt werde ich die Word-Dokumente lieber manuell ausdrucken.
Schade denn ich habe ein kleines Makro erstellt, bei dem ich die Namen und die Anzahl der Drucke der Word-Dokumente eingeben kann und dann druckt der Drucker eben die 20 Dokumente schön im Hintergrund aus aber eben nur einseitig.
Nochmals vielen Danke Antwort.
LG, Peter


Bild

Betrifft: Na dann,
von: Michael
Geschrieben am: 23.10.2015 22:16:52
Peter,
manchmal ist der Programmieraufwand eben höher als es die händische Vorgehensweise rechtfertigt.
Trotzdem weiterhin happy Exceling,
Michael

 Bild

Beiträge aus den Excel-Beispielen zum Thema "warum replaced es nicht?"