Anwendung von Application.ActivePrinter in Excel VBA
Schritt-für-Schritt-Anleitung
Um den Standarddrucker in Excel VBA zu ändern und anschließend ein Dokument auszudrucken, kannst du folgende Schritte befolgen:
- Aktuellen Drucker speichern: Bevor du den Drucker wechselst, speichere den aktuellen Drucker mit
Application.ActivePrinter
.
- Drucker wechseln: Setze den gewünschten Drucker, z.B. den Bullzip PDF Drucker.
- Drucken: Verwende
ActiveWindow.SelectedSheets.PrintOut
, um das aktive Blatt auszudrucken.
- Drucker zurücksetzen: Stelle den ursprünglichen Drucker wieder her.
Hier ist ein Beispielcode, der diese Schritte umsetzt:
Public Sub PDF_Drucker_Einstellen()
Dim sDruckerAktuell As String
sDruckerAktuell = Application.ActivePrinter ' Aktuellen Drucker merken
Application.ActivePrinter = "Bullzip PDF Printer auf Ne04:" ' PDF Drucker einstellen
ActiveWindow.SelectedSheets.PrintOut Copies:=1 ' Dokument drucken
Application.ActivePrinter = sDruckerAktuell ' Drucker wieder zurückstellen
End Sub
Häufige Fehler und Lösungen
-
Fehler beim Ändern des Druckers: Wenn du die Fehlermeldung "Methode ActivePrinter fehlgeschlagen" erhältst, überprüfe, ob der Druckername korrekt ist. Achte darauf, dass der Drucker installiert und aktiv ist.
-
Drucker wird nicht zurückgesetzt: Wenn der Drucker nicht zurückgesetzt wird, stelle sicher, dass der Code zur Wiederherstellung des Druckers nach dem Drucken korrekt ausgeführt wird.
Alternative Methoden
Anstatt den Drucker manuell zu ändern, kannst du auch eine Funktion erstellen, die den Drucker automatisch wechselt, abhängig von bestimmten Bedingungen. Hier ist ein Beispiel, um zu zeigen, wie du einen anderen Drucker für den Druck auswählen kannst:
Public Sub Drucker_wechseln()
Dim aktuellerDrucker As String
aktuellerDrucker = Application.ActivePrinter
' Bedingungen für Druckerwechsel
If Worksheets("Tabelle1").Range("A1").Value = "PDF" Then
Application.ActivePrinter = "Bullzip PDF Printer auf Ne04:"
Else
Application.ActivePrinter = "Brother HL-5130"
End If
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Application.ActivePrinter = aktuellerDrucker
End Sub
Praktische Beispiele
Hier sind einige praxisnahe Beispiele zur Verwendung von Application.ActivePrinter
in Excel VBA:
-
PDF-Drucker nutzen:
Public Sub PDF_Drucken()
Dim sDrucker As String
sDrucker = Application.ActivePrinter
Application.ActivePrinter = "Bullzip PDF Printer auf Ne04:"
ActiveWindow.SelectedSheets.PrintOut Copies:=1
Application.ActivePrinter = sDrucker
End Sub
-
Druckaufträge an WinFax Pro:
Public Sub Faxen()
Dim savPrinter As String
savPrinter = Application.ActivePrinter
Application.ActivePrinter = "WinFax Pro 9.0"
ActiveDocument.PrintOut Background:=False
Application.ActivePrinter = savPrinter
End Sub
Tipps für Profis
- Druckerkennung optimieren: Verwende
WScript.Network
zur automatischen Erkennung und Auswahl des Druckers, um Fehler zu minimieren.
- Debugging: Nutze
Debug.Print Application.ActivePrinter
, um den aktuell aktiven Drucker während der Ausführung deines Codes zu überprüfen.
- Dokumentation: Halte deinen Code gut dokumentiert, insbesondere wenn du mit mehreren Druckern arbeitest, um Verwirrung zu vermeiden.
FAQ: Häufige Fragen
1. Wie kann ich den Standarddrucker in Excel VBA permanent ändern?
Du kannst den Standarddrucker über die Windows-Systemsteuerung ändern, da VBA lediglich den aktuellen Drucker für die Sitzung anpasst.
2. Was mache ich, wenn ich keine Drucker sehe?
Stelle sicher, dass deine Drucker ordnungsgemäß installiert sind und überprüfe die Verbindung. Verwende WScript.Network
zur Auflistung der verfügbaren Drucker.
3. Kann ich mehrere Drucker in meinem VBA-Skript verwenden?
Ja, du kannst mehrere Drucker verwenden, indem du die Application.ActivePrinter
-Eigenschaft mehrmals änderst, je nach Bedarf. Achte darauf, die Drucker nach dem Drucken wieder zurückzusetzen.