Kennst du das? Du musst in Excel immer wieder dieselben Tabellenblätter oder Bereiche ausdrucken? Das kann ganz schön mühsam sein. Zum Glück gibt es eine einfache Lösung: Mit Excel VBA kannst du das Drucken automatisieren und per Knopfdruck erledigen. In diesem Artikel zeige ich dir, wie das geht.
Warum Druckprozesse automatisieren?
Bevor wir uns ins Programmieren stürzen, lass uns kurz darüber sprechen, warum die Automatisierung von Druckprozessen überhaupt sinnvoll ist:
- Zeitersparnis: Kein manuelles Auswählen der Druckbereiche mehr. Ein Klick genügt.
- Fehlerreduktion: Vermeide das versehentliche Drucken falscher Blätter oder Bereiche.
- Benutzerfreundlichkeit: Auch weniger versierte Benutzer können problemlos drucken.
- Wiederholbarkeit: Immer dieselben Einstellungen, immer dasselbe Ergebnis.
Grundlagen von VBA in Excel
VBA (Visual Basic for Applications) ist die Programmiersprache, die in Excel integriert ist. Damit kannst du Excel-Funktionen erweitern und automatisieren. Um VBA zu nutzen, musst du zuerst den „Entwickler”-Reiter in der Excel-Oberfläche aktivieren. Gehe dazu auf „Datei” -> „Optionen” -> „Menüband anpassen” und aktiviere das Kontrollkästchen „Entwickler”.
Nachdem der Entwickler-Reiter aktiviert ist, kannst du den VBA-Editor öffnen, indem du auf den Button „Visual Basic” im Entwickler-Reiter klickst oder die Tastenkombination Alt + F11 drückst.
Ein einfacher Druck-Button: Die ersten Schritte
Lass uns mit einem einfachen Beispiel beginnen. Wir erstellen einen Button, der das aktive Tabellenblatt ausdruckt. Gehe wie folgt vor:
- Öffne den VBA-Editor (Alt + F11).
- Füge ein neues Modul ein: „Einfügen” -> „Modul”.
- Füge folgenden Code in das Modul ein:
Sub DruckenAktivesBlatt()
ActiveSheet.PrintOut
End Sub
Dieser Code ist sehr einfach. Sub DruckenAktivesBlatt()
definiert eine neue Prozedur (auch Subroutine genannt) namens „DruckenAktivesBlatt”. ActiveSheet.PrintOut
ist der Befehl, der das aktive Tabellenblatt an den Standarddrucker schickt.
- Schließe den VBA-Editor.
- Gehe zurück zum Excel-Arbeitsblatt.
- Füge einen Button ein: „Entwickler” -> „Einfügen” -> „Schaltfläche (Formularsteuerelement)”.
- Zeichne den Button an einer beliebigen Stelle im Arbeitsblatt.
- Excel fragt dich nun, welche Makro dem Button zugewiesen werden soll. Wähle „DruckenAktivesBlatt” aus und klicke auf „OK”.
- Ändere den Text des Buttons (z.B. auf „Drucken”), indem du mit der rechten Maustaste auf den Button klickst und „Text bearbeiten” auswählst.
Fertig! Wenn du jetzt auf den Button klickst, wird das aktive Tabellenblatt gedruckt.
Drucken eines bestimmten Bereichs
Oft möchte man nicht das ganze Blatt, sondern nur einen bestimmten Bereich drucken. Hier ist, wie du das machst:
Sub DruckenBereich()
Dim Bereich As Range
Set Bereich = Range("A1:C10") ' Hier den gewünschten Bereich angeben
Bereich.PrintOut
End Sub
In diesem Code definieren wir zuerst eine Variable vom Typ Range
(Bereich). Dann weisen wir dieser Variable den Bereich A1:C10 zu. Du kannst diesen Bereich natürlich anpassen. Schließlich drucken wir den Bereich mit Bereich.PrintOut
.
Drucken mehrerer Blätter
Manchmal möchtest du mehrere Tabellenblätter gleichzeitig drucken. Das geht so:
Sub DruckenMehrereBlaetter()
Dim Blaetter As Variant
Blaetter = Array("Tabelle1", "Tabelle3", "Tabelle5") ' Hier die Namen der Blätter angeben
Sheets(Blaetter).PrintOut
End Sub
Hier erstellen wir ein Array namens Blaetter
, das die Namen der Tabellenblätter enthält, die gedruckt werden sollen. Achte darauf, dass die Namen exakt mit den Tabellenblattnamen übereinstimmen. Anschließend verwenden wir Sheets(Blaetter).PrintOut
, um alle Blätter im Array zu drucken.
Druckdialog anzeigen lassen
Manchmal möchte man dem Benutzer die Möglichkeit geben, die Druckeinstellungen anzupassen, bevor der Druckvorgang startet. Das geht mit folgendem Code:
Sub DruckdialogAnzeigen()
Application.Dialogs(xlDialogPrint).Show
End Sub
Dieser Code öffnet den Standard-Druckdialog von Excel. Der Benutzer kann dann Drucker, Anzahl der Kopien, Druckbereich usw. auswählen.
Fehlerbehandlung
Es ist wichtig, Fehler in deinem VBA-Code zu behandeln. Stell dir vor, du versuchst, ein Blatt zu drucken, das nicht existiert. Das würde zu einem Fehler führen. Hier ist, wie du Fehler abfangen kannst:
Sub DruckenMitFehlerbehandlung()
On Error GoTo Fehlerbehandlung
Sheets("NichtVorhandenesBlatt").PrintOut
Exit Sub
Fehlerbehandlung:
MsgBox "Fehler beim Drucken: " & Err.Description
End Sub
On Error GoTo Fehlerbehandlung
leitet die Ausführung zu der Fehlerbehandlungsroutine um, wenn ein Fehler auftritt. MsgBox "Fehler beim Drucken: " & Err.Description
zeigt eine Meldungsbox mit der Fehlerbeschreibung an. Exit Sub
verhindert, dass die Fehlerbehandlungsroutine ausgeführt wird, wenn kein Fehler aufgetreten ist.
Fortgeschrittene Techniken
Hier sind einige fortgeschrittene Techniken, die du nutzen kannst:
- Drucken basierend auf Zellwerten: Du könntest den Druckbereich dynamisch anpassen, basierend auf dem Wert einer Zelle. Beispielsweise könntest du nur die Zeilen drucken, in denen eine bestimmte Spalte den Wert „Ja” enthält.
- Drucken in eine PDF-Datei: Mit VBA kannst du den Drucker auf einen PDF-Drucker umleiten und die Ausgabe als PDF-Datei speichern.
- Automatisches Drucken beim Öffnen der Datei: Du kannst VBA-Code schreiben, der automatisch ausgeführt wird, wenn die Excel-Datei geöffnet wird. Sei hier aber vorsichtig, da dies unerwartetes Verhalten verursachen kann.
Zusammenfassung
Die Automatisierung von Druckprozessen mit Excel VBA kann dir viel Zeit und Mühe sparen. Wir haben in diesem Artikel die Grundlagen kennengelernt und einige fortgeschrittene Techniken angesprochen. Probiere die Beispiele aus und passe sie an deine eigenen Bedürfnisse an. Mit etwas Übung wirst du bald zum VBA-Druck-Experten!