Auswahl drucken mit VBA in Excel
Schritt-für-Schritt-Anleitung
Um eine Auswahl in Excel über VBA zu drucken, kannst du den folgenden Code verwenden. Dieser Code druckt sowohl Diagramme als auch einen bestimmten Tabellenbereich. Achte darauf, dass du die Namen der Blätter und Diagramme entsprechend deiner Datei anpasst:
Public Sub DRUCKEN()
Dim strDruckbereich, wks As Worksheet, objChart As ChartObject
' Drucken der eingebetteten Diagramme im Blatt Hinweis
Set wks = Sheets("Hinweis")
With wks
Set objChart = .ChartObjects(1) 'oder via Name .ChartObjects("Diagramm 2")
objChart.Chart.PrintOut Copies:=1, Collate:=True
Set objChart = .ChartObjects(2) 'oder via Name .ChartObjects("Diagramm 3")
objChart.Chart.PrintOut Copies:=1, Collate:=True
End With
Set wks = Sheets("Übersicht")
With wks
' Druckbereich merken
strDruckbereich = .PageSetup.PrintArea
' Druckbereich neu setzen und drucken
.PageSetup.PrintArea = "A11:B20"
.PrintOut Copies:=1
' Druckbereich zurücksetzen
.PageSetup.PrintArea = strDruckbereich
End With
End Sub
Häufige Fehler und Lösungen
Ein häufiger Fehler, den du beim Drucken mit VBA erleben kannst, ist der Laufzeitfehler 424 - "Objekt erforderlich". Dies geschieht oft, wenn die Selektionsobjekte nicht korrekt definiert sind. Hier sind einige Lösungen:
- Überprüfe die Objektbezeichnungen: Stelle sicher, dass die Namen der Diagramme und Blätter korrekt sind.
- Verwende
Set für Objekte: Achte darauf, dass du alle Objekte mit Set zuweist, wie im obigen Beispiel gezeigt.
- Druckvorschau verwenden: Wenn du sicherstellen möchtest, dass alles korrekt aussieht, kannst du statt
PrintOut den Befehl PrintPreview verwenden, um eine Vorschau zu erhalten.
Alternative Methoden
Wenn du eine andere Methode zum Drucken verwenden möchtest, kannst du auch die Selection.PrintOut-Funktion nutzen. Hier ein Beispiel, wie du dies für einen markierten Bereich machen kannst:
Selection.PrintOut Copies:=1, Collate:=True
Diese Methode ist besonders nützlich, wenn du mehr Flexibilität in Bezug auf die Auswahl benötigst. Du kannst auch die Funktion PrintPreview verwenden, um die Druckausgabe vorab anzusehen.
Praktische Beispiele
Hier sind einige weitere Beispiele für das Drucken mit Excel VBA:
-
Drucken eines bestimmten Bereichs:
Sheets("Daten").Range("A1:D20").PrintOut Copies:=1
-
Drucken aller Diagramme eines Arbeitsblatts:
Dim chartObj As ChartObject
For Each chartObj In Sheets("Hinweis").ChartObjects
chartObj.Chart.PrintOut
Next chartObj
-
Druckvorschau für einen Bereich:
Sheets("Übersicht").Range("A11:B20").PrintPreview
Tipps für Profis
- Fehlerbehebung: Nutze
On Error Resume Next, um den Code bei Fehlern fortzusetzen. Das kann helfen, kleinere Probleme zu umgehen.
- Druckereinstellungen: Stelle sicher, dass der richtige Standarddrucker eingestellt ist, bevor du den Druckauftrag sendest.
- Dynamische Bereiche: Verwende dynamische Bereiche mit
Named Ranges, um flexibler beim Drucken zu sein.
FAQ: Häufige Fragen
1. Wie kann ich mehrere Blätter gleichzeitig drucken?
Du kannst die Blätter in einem Array gruppieren und dann den Druckbefehl auf die gesamte Gruppe anwenden:
Sheets(Array("Blatt1", "Blatt2")).Select
Selection.PrintOut
2. Was soll ich tun, wenn der Drucker nicht reagiert?
Überprüfe, ob der Drucker korrekt angeschlossen und als Standarddrucker festgelegt ist. Manchmal hilft es auch, Excel neu zu starten.
3. Kann ich eine Vorschau für alle Diagramme gleichzeitig anzeigen?
Ja, du kannst eine Schleife verwenden, um alle Diagramme auf einem Arbeitsblatt in der Vorschau anzuzeigen:
Dim chartObj As ChartObject
For Each chartObj In Sheets("Hinweis").ChartObjects
chartObj.Chart.PrintPreview
Next chartObj