Druckerauswahl in Excel mit VBA
Schritt-für-Schritt-Anleitung
Um eine Druckerauswahl in Excel mithilfe von VBA anzuzeigen, befolge diese Schritte:
-
Öffne den VBA-Editor in Excel mit ALT + F11
.
-
Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (deine Datei)" > Einfügen > Modul.
-
Kopiere den folgenden Code in das Modul:
Sub Druckerauswahl()
Dim strPrinterName As String
strPrinterName = Application.ActivePrinter
If Application.Dialogs(xlDialogPrinterSetup).Show = False Then Exit Sub
ActiveSheet.PrintOut
Application.ActivePrinter = strPrinterName
End Sub
-
Schließe den VBA-Editor und kehre zu Excel zurück.
-
Du kannst jetzt das Makro Druckerauswahl
ausführen, um die Druckerauswahl anzuzeigen.
Häufige Fehler und Lösungen
Problem: Der Druckvorgang startet, obwohl "Abbrechen" gewählt wurde.
Lösung: Stelle sicher, dass dein Code die Rückgabe des Dialogs überprüft. Hier ein Beispiel:
Dim varRueckgabe As Variant
varRueckgabe = Application.Dialogs(xlDialogPrinterSetup).Show
If varRueckgabe = False Then Exit Sub
Problem: Gedruckt wird immer auf dem Standarddrucker.
Lösung: Überprüfe, ob Application.ActivePrinter
korrekt gesetzt ist, bevor du PrintOut
aufrufst.
Alternative Methoden
Wenn du nicht den Dialog zum Auswählen des Druckers verwenden möchtest, kannst du auch direkt einen Drucker in deinem Code angeben:
Sub DirektDrucken()
Application.ActivePrinter = "Dein Druckername"
ActiveSheet.PrintOut
End Sub
Ersetze "Dein Druckername"
durch den Namen des Druckers, den du verwenden möchtest.
Praktische Beispiele
Hier sind einige Beispiele, wie du die Druckerauswahl in verschiedenen Szenarien verwenden kannst:
-
Drucken mehrerer Blätter:
Sub MehrereBlätterDrucken()
Dim strPrinterName As String
strPrinterName = Application.ActivePrinter
If Application.Dialogs(xlDialogPrinterSetup).Show = False Then Exit Sub
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Visible = xlSheetVisible Then
ws.PrintOut
End If
Next ws
Application.ActivePrinter = strPrinterName
End Sub
-
Drucken als PDF:
Um alle aktiven Blätter als ein PDF-Dokument zu drucken, kannst du folgenden Code verwenden:
Sub DruckAlsPDF()
Dim strPrinterName As String
strPrinterName = Application.ActivePrinter
Application.ActivePrinter = "Microsoft Print to PDF"
Dim ws As Worksheet
Dim wksSheets() As String
Dim intCounter As Integer
intCounter = 0
For Each ws In ThisWorkbook.Worksheets
If ws.Visible = xlSheetVisible Then
ReDim Preserve wksSheets(intCounter)
wksSheets(intCounter) = ws.Name
intCounter = intCounter + 1
End If
Next ws
Sheets(wksSheets).PrintOut
Application.ActivePrinter = strPrinterName
End Sub
Tipps für Profis
- Verwende
Application.ScreenUpdating = False
, um das Flackern des Bildschirms während des Druckvorgangs zu vermeiden.
- Du kannst die Druckereinstellungen vor dem Drucken anpassen, indem du die Eigenschaften von
ActiveSheet.PageSetup
änderst.
- Nutze die
vba printout activeprinter
Funktion für spezifische Druckaufträge, wenn du mehrere Drucker in deinem Setup hast.
FAQ: Häufige Fragen
1. Wie kann ich den Standarddrucker programmgesteuert ändern?
Du kannst den Standarddrucker mit Application.ActivePrinter = "Druckername"
ändern. Stelle sicher, dass der Druckername exakt ist.
2. Gibt es eine Möglichkeit, eine Druckerauswahl ohne Dialogfeld zu implementieren?
Ja, du kannst direkt einen Drucker in deinem VBA-Code angeben, ohne das Dialogfeld anzuzeigen. Beachte, dass dies weniger flexibel ist.
3. Welches Excel-Format wird für VBA-Drucker ausgewählt?
Diese Beispiele sind für Excel 2010 und neuere Versionen geeignet.