Drucker auslesen und auswählen in Excel mit VBA
Schritt-für-Schritt-Anleitung
-
Drucker auslesen:
Um alle installierten Drucker in Excel auszulesen, kannst du den folgenden VBA-Code verwenden. Dieser Code füllt eine ComboBox mit den Druckernamen:
Sub DruckerAuslesen()
Dim Drucker As Variant
For Each Drucker In Application.PrinterNames
ComboBox1.AddItem Drucker
Next Drucker
End Sub
-
Drucker auswählen:
Um den ausgewählten Drucker in der ComboBox zu setzen und zu drucken, kannst du den folgenden Code verwenden:
Sub Drucken()
Dim alterDrucker As String
Dim neuerDrucker As String
alterDrucker = Application.ActivePrinter
neuerDrucker = ComboBox1.Value ' Der ausgewählte Drucker aus der ComboBox
Application.ActivePrinter = neuerDrucker
ActiveSheet.PrintOut
Application.ActivePrinter = alterDrucker
End Sub
-
Druckerwechseln:
Falls du den Drucker dynamisch ändern musst, kannst du den Druckernamen mit der notwendigen Endung verknüpfen. Hier ein Beispiel, wie du das umsetzen kannst:
Sub Drucker_Wechseln(DruckerName As String)
SetDefaultPrinter DruckerName
End Sub
Häufige Fehler und Lösungen
-
Fehler: Drucker nicht gefunden:
Wenn der ausgewählte Drucker nicht gefunden wird, überprüfe, ob der Druckername genau mit dem in der ComboBox übereinstimmt. Achte auf Leerzeichen oder zusätzliche Zeichen.
-
Fehler: Keine Druckaufträge:
Wenn nach dem Drucken keine Aufträge gesendet werden, stelle sicher, dass der Drucker online ist und keine Fehler vorliegen.
Alternative Methoden
Eine alternative Methode zum Auslesen der Drucker ist die Verwendung von API-Funktionen. Du kannst die Windows-API verwenden, um Druckereigenschaften zu ändern:
Declare Function WriteProfileString Lib "kernel32" Alias "WriteProfileStringA" (ByVal lpszSection As String, ByVal lpszKeyName As String, ByVal lpszString As String) As Long
Mit dieser Methode kannst du den Standarddrucker direkt über die Windows-Systemprofile ändern.
Praktische Beispiele
-
Drucker wechseln und drucken:
Wenn du den Drucker wechseln und direkt drucken möchtest, kannst du diesen Code verwenden:
Sub DruckAufDrucker()
Dim DruckerName As String
DruckerName = "Drucker1 auf USB0001" ' Füge hier den vollständigen Druckernamen ein
Drucker_Wechseln(DruckerName)
ActiveSheet.PrintOut
End Sub
-
Dynamisches Auslesen:
Wenn du eine Liste aller Drucker in ein Arbeitsblatt einfügen möchtest:
Sub DruckerListe()
Dim i As Integer
For i = 0 To Application.PrinterNames.Count - 1
Cells(i + 1, 1).Value = Application.PrinterNames(i)
Next i
End Sub
Tipps für Profis
- Verwende Fehlerbehandlung in deinem VBA-Code, um unerwartete Probleme zu vermeiden. Ein einfacher
On Error Resume Next kann helfen.
- Halte deine Druckerwahl benutzerfreundlich. Füge beschreibende Labels zu deinen ComboBoxen hinzu, um die Auswahl zu erleichtern.
- Teste den Code in verschiedenen Excel-Versionen, da sich die Funktionsweise und die API-Methoden zwischen den Versionen unterscheiden können.
FAQ: Häufige Fragen
1. Wie kann ich den Standarddrucker in Excel ändern?
Du kannst den Standarddrucker ändern, indem du den Namen des gewünschten Druckers über die Application.ActivePrinter-Eigenschaft setzt.
2. Was mache ich, wenn mein Drucker nicht in der Liste erscheint?
Stelle sicher, dass der Drucker korrekt installiert ist und dass du über die notwendigen Berechtigungen verfügst, um auf ihn zuzugreifen. Versuche, die Drucker erneut auszulesen.
3. Kann ich auch Netzwerkdrucker auslesen?
Ja, alle installierten Drucker, einschließlich Netzwerkdrucker, können über die Application.PrinterNames-Eigenschaft ausgelesen werden.