Clever-Excel-Forum

Normale Version: VBA - Drucken mit Druckerauswahl
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hi Leute,

ich habe eine Userform, die zum Auswählen von Druckoptionen dient. Gibt es eine Möglichkeit, relativ unkompliziert eine Combobox mit den installierten Druckern zu bestücken? Bzw gibt es die Möglichkeit nach dem Öffnen von


PHP-Code:
Application.Dialogs(xlDialogPrint).Show 


nur den ausgewählten Drucker zu übernehmen und den Druckbereich selber festzulegen?

Im Prinzip will ich, dass der User einen Drucker auswählt und danach dann drei verschiedene Druckaufträge mit genau diesem Drucker ausgeführt werden.



Gruß
Ich habe nun folgenden Code im Internet gefunden:


Code:
Application.Dialogs(xlDialogPrinterSetup).Show
ThisWorkbook.Sheets(Blattname).PrintOut
Application.ActivePrinter = strPrinterName


Allerdings druckt er in jedem Fall, auch wenn ich im aufploppenden Druckermenü auf Abbrechen drücke ... wie verhindere ich das?
Hallo,

Zitat:Allerdings druckt er in jedem Fall, auch wenn ich im aufploppenden Druckermenü auf Abbrechen drücke ... wie verhindere ich das?

rein gefühlsmäßig würde ich mal sagen, die C64-Zeiten mit den zeilenweisen Druckern sind vorbei.
Heute werden die Daten in den Druckerspeicher eingelesen und in der Gesamtheit ausgedruckt.
Das bedeutet aber auch, daß der Drucker schneller druckt, als Du auf abbrechen klicken kannst.
Zusätzlich muß der Druckerpuffer ja auch wieder geleert werden.
Aber wie gesagt, das ist eine rein gefühlsmäßige Meinung.
Hallöchen,

könnte sein, dass Du nur die Druckerauswahl abbrichst und nicht den Druck Sad
Nimm mal eine zusätzliche MsgBox mit OK und Abbrechen rein. Im Prinzip

If Msgbox("Wollen Sie drucken?", vbokcancel) = vbcancel Then Exit Sub


Eventuell geht's auch so:
If Application.Dialogs(xlDialogPrinterSetup).Show = True Then _
ActiveWindow.SelectedSheets.PrintOut
Hallo easy,

also mal komplett als Beispiel:
Sub aaa()
Dim strPrinterName As String
strPrinterName = ActivePrinter
If Application.Dialogs(xlDialogPrinterSetup).Show Then
Sheets(Blattname).PrintOut
ActivePrinter = strPrinterName
End If
End Sub
Gruß Uwe
Hallöchen,

mal noch ein Hinweis zu Uwe's Code. Mit diesem wird der vor einem Wechsel aktive Drucker wieder aktiv gesetzt. Falls das nicht gewünscht ist, einfach die entsprechenden Zeilen weglassen, einschl. Dim ... Oder eben nur mein kurzer ins Sub Smile (die zweite, "eventuelle" Variante)