Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: nur bestimmte Tabellenblätter drucken

nur bestimmte Tabellenblätter drucken
31.05.2018 19:39:23
Felix
Hallo zusammen,
ich hoffe ihr könnt mir bei meinem Problem helfen, weil ich bin mit meinem Latein am Ende.
Folgende Problemstellung:
Ich habe eine Mappe mit 14 Tabellenblättern. Blatt 1 stellt eine Art Auswertungsblatt dar und die restlichen 13 Blätter sind mehr oder weniger identisch. Auf den Blättern 2-14 befindet sich jeweils eine CheckBox (Bezeichnung immer gleich).
Ich möchte nun mit einem Button eine pdf erstellen bzw. speichern, bei der Blatt 1 und zusätzlich alle Blätter mit aktivierter CheckBox berücksichtigt werden. Und diese möchte ich dann idealerweise manuell in einem von mir gewählten Ordner abspeichern.
Das ist was ich bisher fabriziert habe:
Allerdings löscht mir dabei mein Makro alle Arbeitsblätter, die nicht gedruckt werden.
Private Sub CommandButton2_Click()
Dim objOLEObject As OLEObject
Dim wksSheet As Worksheet
Dim pfadbericht As String
Application.ScreenUpdating = False
pfadbericht = ThisWorkbook.Path & VBA.Left$(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)
For Each wksSheet In ThisWorkbook.Worksheets
For Each objOLEObject In wksSheet.OLEObjects
With objOLEObject
If .progID = "Forms.CheckBox.1" Then _
If .Name = "CheckBox1" And Not .Object.Value Then _
wksSheet.Visible = xlSheetVeryHidden
End With
Next
Next
On Error Resume Next
ActiveWorkbook.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=pfadbericht, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
If Err.Number  0 Then
MsgBox ("Error: " & _
Err.Number & " " & Err.Description & _
vbNewLine & vbNewLine & "Unter Umständen ist der " & _
"schon abgespeicherte Bericht geöffnet.")
On Error GoTo 0
For Each wksSheet In ThisWorkbook.Worksheets
wksSheet.Visible = xlSheetVisible
Next
Else
MsgBox ("Der Bericht wurde als pdf-Datei erstellt und " & _
"in Ordner '1_Bericht' abgelegt!")
End If
End If
End Sub

Ich hoffe jemandem fällt dazu eine elegante Lösung ein.
Vielen Dank schon mal! :)
Grüße Felix
Anzeige

1
Beitrag zum Forumthread
Beitrag zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nur bestimmte Tabellenblätter drucken
01.06.2018 08:43:07
ChrisL
Hi Felix
Die Blätter werden nur versteckt
wksSheet.Visible = xlSheetVeryHidden
Am Ende vom Code wieder einblenden und gut ist.
For Each wksSheet In ThisWorkbook.Worksheets
wksSheet.Visible = True
Next
cu
Chris
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Bestimmte Tabellenblätter drucken und als PDF speichern


Schritt-für-Schritt-Anleitung

Um bestimmte Tabellenblätter in Excel zu drucken und als PDF zu speichern, kannst du folgende Schritte befolgen:

  1. Öffne deine Excel-Datei mit den entsprechenden Tabellenblättern.

  2. Füge einen Button hinzu, der das Makro ausführt. Gehe dazu auf „Entwicklertools“ > „Einfügen“ und wähle einen Button aus.

  3. Öffne den VBA-Editor (Alt + F11) und füge das folgende Makro in das Modul ein:

    Private Sub CommandButton2_Click()
       Dim objOLEObject As OLEObject
       Dim wksSheet As Worksheet
       Dim pfadbericht As String
       Application.ScreenUpdating = False
       pfadbericht = ThisWorkbook.Path & VBA.Left$(ActiveWorkbook.Name, Len(ActiveWorkbook.Name) - 5)
    
       For Each wksSheet In ThisWorkbook.Worksheets
           For Each objOLEObject In wksSheet.OLEObjects
               With objOLEObject
                   If .progID = "Forms.CheckBox.1" Then
                       If .Name = "CheckBox1" And Not .Object.Value Then
                           wksSheet.Visible = xlSheetVeryHidden
                       End If
                   End If
               End With
           Next
       Next
    
       On Error Resume Next
       ActiveWorkbook.ExportAsFixedFormat _
           Type:=xlTypePDF, _
           Filename:=pfadbericht, _
           Quality:=xlQualityStandard, _
           IncludeDocProperties:=True, _
           IgnorePrintAreas:=False, _
           OpenAfterPublish:=False
    
       If Err.Number <> 0 Then
           MsgBox ("Error: " & Err.Number & " " & Err.Description & _
           vbNewLine & vbNewLine & "Unter Umständen ist der " & _
           "schon abgespeicherte Bericht geöffnet.")
           On Error GoTo 0
           For Each wksSheet In ThisWorkbook.Worksheets
               wksSheet.Visible = xlSheetVisible
           Next
       Else
           MsgBox ("Der Bericht wurde als pdf-Datei erstellt und " & _
           "in Ordner '1_Bericht' abgelegt!")
       End If
    End Sub
  4. Schließe den VBA-Editor und teste den Button. Damit solltest du nun in der Lage sein, die aktiven Blätter zu drucken, während die nicht markierten Blätter verborgen bleiben.


Häufige Fehler und Lösungen

  • Problem: Der Bericht wird nicht erstellt.

    • Lösung: Stelle sicher, dass der Pfad für die PDF-Datei korrekt ist und dass keine Datei mit demselben Namen bereits geöffnet ist.
  • Problem: Blätter werden nicht wieder eingeblendet.

    • Lösung: Füge am Ende deines Codes die Zeilen hinzu, um alle Blätter sichtbar zu machen:
    For Each wksSheet In ThisWorkbook.Worksheets
       wksSheet.Visible = True
    Next

Alternative Methoden

Wenn du nicht auf VBA zurückgreifen möchtest, kannst du auch manuell bestimmte Tabellenblätter drucken:

  1. Wähle die Blätter aus: Halte die Strg-Taste gedrückt und klicke auf die Tabs der Blätter, die du drucken möchtest.
  2. Drucke die ausgewählten Blätter: Klicke auf „Datei“ > „Drucken“ und wähle die Option „Ausgewählte Blätter drucken“.

Diese Methode ist einfach, wenn du nur gelegentlich bestimmte Excel-Blätter drucken möchtest.


Praktische Beispiele

Ein Beispiel für das oben beschriebene Makro wäre eine Excel-Arbeitsmappe mit einem Auswertungsblatt und mehreren Datenblättern. Wenn du nur die Blätter drucken möchtest, die eine CheckBox aktiviert haben, hilft dir das Makro, nur diese Blätter in die PDF umzuwandeln.


Tipps für Profis

  • Nutze Variablen für mehr Flexibilität: Du kannst das Makro anpassen, um verschiedene CheckBox-Namen oder Pfade je nach Bedarf zu verwenden.
  • Teste das Makro in einer Kopie: Vermeide Datenverlust, indem du dein Makro zuerst in einer Kopie deiner Datei testest.
  • Automatisiere den Speicherort: Du kannst den Speicherort dynamisch festlegen, indem du den Benutzer nach dem Pfad fragst.

FAQ: Häufige Fragen

1. Wie kann ich alle Tabellenblätter drucken? Du kannst alle Tabellenblätter drucken, indem du im Druckdialog die Option „Alle Blätter“ auswählst.

2. Was mache ich, wenn ein Tabellenblatt nicht gedruckt wird? Überprüfe, ob das Blatt versteckt oder sehr versteckt ist. Du kannst den Status über VBA ändern oder die Blätter manuell sichtbar machen.

3. Gibt es eine Möglichkeit, nur aktive Blätter zu drucken? Ja, du kannst die Option „Aktive Blätter drucken“ im Druckdialog auswählen, um nur die momentan sichtbaren Blätter zu drucken.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige