Per VBA die Papierfächer eines Druckers zuweisen
Hallo liebe Kolleginnen und Kollegen,
ich habe ein Word-Macro gebaut, welches eine vom Nutzer festgelegte Anzahl an Drucken entsprechend ausdruckt.
Dabei soll die erste Seite aus einem bestimmten Druckerfach kommen (Briefbogen).
Das eigentliche Kern-Modul wird durch ein Formular aufgerufen, in dem der Benutzer die Anzahl der Kopien festlegt und mittels Radio-Button das Fach der ersten Seite auswählt.
Der Radio-Button entscheidet, welches Modul aufgerufen wird (was Ihr unten seht ist nur eins von zwei) und die Module fragen eine public Variable ab.
Beim ersten mal funktioniert es soweit.
Wenn der Nutzer dann ein anderes Dokument ausdruckt, erscheint dessen erste Seite auf normalem Papier.
Ich weiß nicht weiter.
Ich hatte die Codeblöcke "Ausdruck umstellen" und "Fachzuweisung wieder aufheben" auch schon in der Loop-Schleife, aber das Ergebnis ist gleich.
Hat jemand von Euch eine Idee, was ich da falsch mache?
Ich danke Euch jetzt schon.
Andreas
ich habe ein Word-Macro gebaut, welches eine vom Nutzer festgelegte Anzahl an Drucken entsprechend ausdruckt.
Dabei soll die erste Seite aus einem bestimmten Druckerfach kommen (Briefbogen).
Das eigentliche Kern-Modul wird durch ein Formular aufgerufen, in dem der Benutzer die Anzahl der Kopien festlegt und mittels Radio-Button das Fach der ersten Seite auswählt.
Der Radio-Button entscheidet, welches Modul aufgerufen wird (was Ihr unten seht ist nur eins von zwei) und die Module fragen eine public Variable ab.
Private Sub ProDruSSSB()
'Ausdruck umstellen
'Erste Seite aus oberem Fach, alle anderen aus dem Standardfach des Druckers
With ActiveDocument.PageSetup
.FirstPageTray = wdPrinterUpperBin
.OtherPagesTray = wdPrinterDefaultBin
End With
Do While numKopien > 0
'aktives Dokument drucken
Dim bOption As Boolean
bOption = Options.WarnBeforeSavingPrintingSendingMarkup
Options.WarnBeforeSavingPrintingSendingMarkup = False
Application.PrintOut Range:=wdPrintAllDocument, _
Item:=wdPrintDocumentContent, Copies:=1
Options.WarnBeforeSavingPrintingSendingMarkup = bOption
'ActiveDocument.PrintOut Copies:=1
numKopien = numKopien - 1
frmProDruSS.Label6.Caption = numKopien
frmProDruSS.Label5.Caption = "ACHTUNG: Kopienzähler läuft rückwärts und zeigt jetzt die noch zu fertigenden Kopien an. Dieses Fenster schließt sich selbsttätig. Bitte haben Sie einen Moment Geduld."
DoEvents
Loop
'Fachzuweisung wieder aufheben
With ActiveDocument.PageSetup
.FirstPageTray = wdPrinterDefaultBin
.OtherPagesTray = wdPrinterDefaultBin
End With
End Sub
Beim ersten mal funktioniert es soweit.
Wenn der Nutzer dann ein anderes Dokument ausdruckt, erscheint dessen erste Seite auf normalem Papier.
Ich weiß nicht weiter.
Ich hatte die Codeblöcke "Ausdruck umstellen" und "Fachzuweisung wieder aufheben" auch schon in der Loop-Schleife, aber das Ergebnis ist gleich.
Hat jemand von Euch eine Idee, was ich da falsch mache?
Ich danke Euch jetzt schon.
Andreas
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 347720
Url: https://administrator.de/forum/per-vba-die-papierfaecher-eines-druckers-zuweisen-347720.html
Ausgedruckt am: 01.04.2025 um 09:04 Uhr
4 Kommentare
Neuester Kommentar
Hallo,
Gruß,
Peter
Zitat von @beidermachtvongreyscull:
Wenn der Nutzer dann ein anderes Dokument ausdruckt, erscheint dessen erste Seite auf normalem Papier.
Und wenn die Anwendung (Word) da zwischen neu gestartet wird?Wenn der Nutzer dann ein anderes Dokument ausdruckt, erscheint dessen erste Seite auf normalem Papier.
Ich weiß nicht weiter.
Evtl. die Druckerparameter vorher auslesen/sichern um nach dem drucken den Ausgangszustand (Word starten) wieder herzustellen? Macht Excel auch späne? Diese Anwendungen nutzen ja die geänderten Einstellung weiter solange die gestarte sind bzw. im RAM liegen. Word neustart dazwischen sollte/könnte das Problem lösen (unschön....)Ich hatte die Codeblöcke "Ausdruck umstellen" und "Fachzuweisung wieder aufheben" auch schon in der Loop-Schleife, aber das Ergebnis ist gleich.
Vielleicht den Windows Standarddrucker wieder einlesen?Hat jemand von Euch eine Idee, was ich da falsch mache?
Nur ne blöde Idee von mir.Gruß,
Peter
Zitat von @beidermachtvongreyscull:
Dann habe ich die Ausgangsstellung, die ich eigentlich mit dem Codeblock "Fachzuweisung wieder aufheben" setze.
Si, gesehen, gelesen, registriert, verstanden (auch vorher schon)Dann habe ich die Ausgangsstellung, die ich eigentlich mit dem Codeblock "Fachzuweisung wieder aufheben" setze.
Nur ne blöde Idee von mir.
Gruß,
Peter