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

Forumthread: Aktiven Drucker anzeigen

Aktiven Drucker anzeigen
Rainer
Hallo,
habe hier https://www.herber.de/mailing/234704h.htm
den Code für die Auswahl des Druckfensters gefunden.
Würde gerne in einem Ablauf mit mehreren Druckaufträgen eine MsgBox vorschalten.
Inhalt:
Ihr aktiver Drucker ist: HP xxx
Möchten Sie die Druckaufträge mit diesem Drucker ausführen?
Ja, dann Druck ausführen
Nein, dann Code aus o.g. Link.
Allerdings habe ich nichts (noch nichts) gefunden, was mir im Dialog den aktiv eingestellten Drucker anzeigt.
Kann mir da jemand weiterhelfen?
Gruß Rainer
Anzeige
AW: Aktiven Drucker anzeigen
30.10.2009 22:50:48
Josef
Hallo Rainer,
so?
Sub machDruck()
  Dim strActP As String
  
  strActP = Application.ActivePrinter
  
  
  If MsgBox("Ihr aktiver Drucker ist: " & strActP & vbLf & _
    "Möchten Sie die Druckaufträge mit diesem Drucker ausführen?", _
    vbInformation + vbYesNo, "Drucken") = vbNo Then
    
    Application.Dialogs(xlDialogPrinterSetup).Show
    
  End If
  
  ActiveSheet.PrintOut
  
  Application.ActivePrinter = strActP
  
End Sub


Gruß Sepp

Anzeige
Eine Frage hätte ich dazu ....
30.10.2009 23:26:55
WalterK
Hallo Josef,
Weil mich diese Sache auch interessiert habe ich den Code ausprobiert.
Beim 2. Fenster "Druckereinrichtung" wird trotz Klick auf Abbrechen ausgedruckt.
Ginge das auch so, dass dann tatsächlich auch abgebrochen wird.
Besten Dank und Servus, Walter
AW: Eine Frage hätte ich dazu ....
31.10.2009 00:20:27
Josef
Hallo Walter,
das geht so.
Sub machDruck()
  Dim strActP As String, blnPrint As Boolean
  
  strActP = Application.ActivePrinter
  blnPrint = True
  
  If MsgBox("Ihr aktiver Drucker ist: " & strActP & vbLf & _
    "Möchten Sie die Druckaufträge mit diesem Drucker ausführen?", _
    vbInformation + vbYesNo, "Drucken") = vbNo Then
    
    blnPrint = Application.Dialogs(xlDialogPrinterSetup).Show
    
  End If
  
  If blnPrint Then ActiveSheet.PrintPreview
  
  Application.ActivePrinter = strActP
  
End Sub

Gruß Sepp

Anzeige
Danke Josef, genau so! Servus, Walter
31.10.2009 00:40:50
WalterK
AW: Danke Josef, genau so! Servus, Walter
31.10.2009 01:00:26
Rainer
Hallo Walter,
manchmal braucht man nur den Anstoß.
Habe dieses Problem dann mit einer anderen MsgBox gelöst.
Dim strActP As String
strActP = Application.ActivePrinter
Select Case MsgBox("Ihr aktiver Drucker ist: " & vbLf & strActP & vbLf & _
"Möchten Sie die Druckaufträge mit diesem Drucker ausführen?", _
vbInformation + vbYesNoCancel, "Drucken")
Case Is = vbCancel
Exit Sub
Case Is = vbNo
Application.Dialogs(xlDialogPrinterSetup).Show
Case Is = vbYes
ActiveSheet.PrintOut
Application.ActivePrinter = strActP
End Select
Gruß Rainer
Anzeige
AW: Danke Josef, genau so! Servus, Walter
31.10.2009 08:31:22
Rainer
Hallo,
als VB-Laie wollte ich nun natürlich ganz schlau sein und die Anzahl der zu druckenden Seiten einfach mit Variable austauschen.
Klappt natürlich nicht.
Dachte in etwa so:
Sub DruckeXmal()
' bezogen auf Manschaften
Dim strAnz As String
' AnzMannschaften = Anzahl Druckseiten
strAnz = Worksheets("Erfassung").Range("AC344").Value
ExecuteExcel4Macro "PRINT(1,,,strAnz,,,,,,,,2,,,TRUE,,FALSE)"
End Sub
Würde gerne im Anschluss an die vorherige Abfrage nun einfach so viele Blätter Drucken, wie Mannschaften (Anzahl) in Zelle AC34 des Arbeitsblattes "Erfassung" stehen.
Müsste doch irgendwie funktionieren oder?
Gruß Rainer
Anzeige
Anzahl Kopien
31.10.2009 18:21:28
Josef
Hallo Rainer,
vielleicht so?
Sub DruckeXmal()
  ' bezogen auf Manschaften
  Dim intAnz As Integer
  
  ' AnzMannschaften = Anzahl Druckseiten
  intAnz = Worksheets("Erfassung").Range("AC344").Value
  
  ActiveSheet.PrintOut Copies:=intAnz
  
End Sub

Gruß Sepp

Anzeige
AW: Anzahl Kopien
31.10.2009 21:34:41
Rainer
Hallo Sepp,
danke Dir, der PrintOut-Befehl hat geklappt.
Gruß Rainer
AW: Aktiven Drucker anzeigen
30.10.2009 23:33:54
Rainer
Hallo Sepp,
klasse, gleich noch den gesamten Code.
Vielen Dank
Gruß Rainer
;
Anzeige
Anzeige

Infobox / Tutorial

Aktiven Drucker in Excel anzeigen und verwalten


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke im Menü auf Einfügen > Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub machDruck()
       Dim strActP As String
       strActP = Application.ActivePrinter
    
       If MsgBox("Ihr aktiver Drucker ist: " & strActP & vbLf & _
                 "Möchten Sie die Druckaufträge mit diesem Drucker ausführen?", _
                 vbInformation + vbYesNo, "Drucken") = vbNo Then
           Application.Dialogs(xlDialogPrinterSetup).Show
       End If
    
       ActiveSheet.PrintOut
       Application.ActivePrinter = strActP
    End Sub
  4. Führe das Makro aus: Schließe den VBA-Editor und drücke ALT + F8, wähle machDruck und klicke auf Ausführen.

Dieser Code zeigt eine MsgBox mit dem aktiven Drucker an und fragt, ob die Druckaufträge fortgeführt werden sollen. Bei Auswahl von "Nein" öffnet sich die Druckereinrichtung.


Häufige Fehler und Lösungen

  • Problem: Druck wird trotz "Abbrechen" in der Druckereinrichtung fortgesetzt.

    • Lösung: Stelle sicher, dass der blnPrint-Boolean korrekt gesetzt wird, um den Druckvorgang zu steuern. Siehe Anpassung im Code:
    Dim blnPrint As Boolean
    blnPrint = True
    
    If MsgBox(...) = vbNo Then
        blnPrint = Application.Dialogs(xlDialogPrinterSetup).Show
    End If
    
    If blnPrint Then
        ActiveSheet.PrintOut
    End If

Alternative Methoden

Eine einfache Methode, den aktiven Drucker anzuzeigen, ist die Verwendung eines minimalen VBA-Codes:

Sub Drucker()
    MsgBox Application.ActivePrinter
End Sub

Diese Methode ist nützlich, wenn du lediglich den aktuellen Drucker anzeigen möchtest, ohne weitere Interaktionen.


Praktische Beispiele

Hier sind einige praktische Beispiele, wie du den aktiven Drucker in verschiedenen Szenarien verwenden kannst:

  1. Druckaufträge basierend auf Zellenwerten:

    Sub DruckeXmal()
       Dim intAnz As Integer
       intAnz = Worksheets("Erfassung").Range("AC344").Value
       ActiveSheet.PrintOut Copies:=intAnz
    End Sub
  2. Letzte Druckaufträge anzeigen:

    Du kannst auch eine Liste der letzten Druckaufträge anzeigen, indem du den vba drucker auslesen-Befehl in einer Schleife implementierst, um Druckerhistorie zu verwalten.


Tipps für Profis

  • Nutze Application.ActivePrinter, um den aktuell aktiven Drucker dynamisch auszulesen und anzupassen.
  • Speichere deine VBA-Skripte in einer personalisierten Excel-Vorlage, um sie jederzeit griffbereit zu haben.
  • Experimentiere mit der Excel Druckereinrichtung beim Öffnen-Option, um den Drucker automatisch zu setzen, bevor du mit dem Drucken beginnst.

FAQ: Häufige Fragen

1. Wie kann ich meinen Drucker in Excel ändern?
Du kannst die Druckereinrichtung über Application.Dialogs(xlDialogPrinterSetup).Show aufrufen. Dies öffnet das Druckereinrichtungsfenster.

2. Warum wird der Druckauftrag nicht gestoppt, wenn ich auf "Abbrechen" klicke?
Stelle sicher, dass du die blnPrint-Variable korrekt verwendest, um den Druckbefehl nur auszuführen, wenn der Benutzer zustimmt.

3. Gibt es eine Möglichkeit, mehrere Kopien eines Arbeitsblatts zu drucken?
Ja, du kannst die Anzahl der Kopien über den Copies-Parameter im PrintOut-Befehl festlegen, wie im Beispiel oben gezeigt.

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