Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Selection Drucken via vba

Selection Drucken via vba
06.11.2008 10:45:11
Jana
Hallo liebes Forum!
Ich habe eine umfangreiche Datei, die eine Reihe von Diagrammen und Tabellen enthält.
1. Einige dieser Diagramme sollen gedruckt werden.
2. Ein Tabellenausschnitt soll gedruckt werden-> dieser ist über Druckbereich festlegen Da die Datei auf verschiedenen Rechnern läuft mit unterschiedlichen Druckern, ist "nur" der jeweilige Standarddrucker zu wählen. (Die Einstellung eines Druckers als Standarddrucker ist überall sichergestellt)
Um jedes Diagramm einzeln zu drucken, dachte ich mir folgendes:

Public Sub DRUCKEN()
Sheets("Hinweis").Select
ActiveSheet.Shapes.Range(Array("Chart 1","Chart 2")).Select
Selection.PrintOut Copies:=1, Collate:=True
Sheets("Übersicht").Select
Range("A11:B20").Select
Section.PrintOut Copies:=1
End Sub


Problem: Laufzeitfehler 424 - Objekt erforderlich
Ich kann mit dieser Meldung leider nix anfangen...
Aber es hat doch bestimmt jemand eine ganz tolle Idee!
Vielen, vielen Dank
Gruß Jana

Anzeige

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Selection Drucken via vba
06.11.2008 17:59:00
fcs
Hallo Jana,
schlecht zu sagen, was da bei dir nicht funktioniert, ich tippe mal, das die Selektion, die das Makro macht nicht gedruckt werden kann.
Hier mein Vorschlag, der zumindest mit der Seitenvorschau funktioniert hat.
Gruß
Franz

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.PrintPreview
objChart.Chart.PrintOut Copies:=1, Collate:=True
Set objChart = .ChartObjects(2) 'oder via Name .ChartObjects("Diagramm 3")
'         objChart.Chart.PrintPreview
objChart.Chart.PrintOut Copies:=1, Collate:=True
End With
Set wks = Sheets("Übersicht")
With wks
'Druckbereich merken
strDruckbereich = .PageSetup.PrintArea
'Druckberich neu setzen und drucken
.PageSetup.PrintArea = "A11:B20"
'      .PrintPreview
.PrintOut Copies:=1
'Druckbereich zurücksetzen
.PageSetup.PrintArea = strDruckbereich
End With
End Sub


Anzeige
AW: Selection Drucken via vba
06.11.2008 20:07:27
Jana
Guten Abend fcs!!
Dank dir!! wenn auch etwas spät meine Antwort... dafür hat es wunderbar in meinen Code gepasst!!
Dankeschön und nen schön Abend
Gruß Jana
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige

Infobox / Tutorial

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:

  1. Drucken eines bestimmten Bereichs:

    Sheets("Daten").Range("A1:D20").PrintOut Copies:=1
  2. Drucken aller Diagramme eines Arbeitsblatts:

    Dim chartObj As ChartObject
    For Each chartObj In Sheets("Hinweis").ChartObjects
        chartObj.Chart.PrintOut
    Next chartObj
  3. 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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige