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

Forumthread: Nur Blätter als pdf drucken mit aktiver Checkbox

Nur Blätter als pdf drucken mit aktiver Checkbox
09.10.2015 14:34:24
Felix
Hallo zusammen,
ich bin am verzweifeln und brauche eure Experten-Hilfe.
Ich habe eine Arbeitsmappe mit 14 Blättern. Auf den Blättern 2 bis 14 befindet sich je eine Checkbox (AcitveX-Steuerelement).
Die Arbeitsmappe soll per Button als pdf gespeichert/gedruckt werden. Dabei soll das erste Blatt (auf dem befindet sich der Button) immer gedruckt werden und zudem alle Blätter, auf denen die Checkbox markiert ist.
Die Checkboxen haben bisher alle den Namen "CheckBox1", was für einen anderen Code ausreicht/funktioniert. Es ist aber kein Problem sie einzeln zu nummerieren (z.B. 1-13), was wahrscheinlich für dieses Makro besser ist.
Mein bisheriger Code zum abspeichern lautet:
Private Sub CommandButton2_Click()
Dim pfad4 As String
pfad4 = ThisWorkbook.Path & "\" & "1_Bericht" & "\" & Left(ActiveWorkbook.Name, Len( _
ActiveWorkbook.Name) - 4)
ActiveWorkbook.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=pfad4, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
End Sub

Vielen Dank schon mal für eure Hilfe
Grüße Felix

Anzeige

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

Betreff
Datum
Anwender
Anzeige
AW: Nur Blätter als pdf drucken mit aktiver Checkbox
09.10.2015 15:23:48
Mullit
Hallo,
wenn Du ActiveX-Boxen hast, könnte sowas gehen:
Option Explicit

Public Sub test()
Dim objOLEObject As OLEObject
Dim wksSheet As Worksheet
Dim strPath As String
Application.ScreenUpdating = False
strPath = "C:\Users\MyUser\Documents\Excel\mytest.pdf"  'anpassen... 
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:=strPath, _
    Quality:=xlQualityStandard, _
    IncludeDocProperties:=True, _
    IgnorePrintAreas:=False, _
    OpenAfterPublish:=False
If Err.Number <> 0 Then MsgBox "Error: " & _
  Err.Number & " " & Err.Description
On Error GoTo 0
For Each wksSheet In ThisWorkbook.Worksheets
      wksSheet.Visible = xlSheetVisible
Next
End Sub


VBA/HTML - CodeConverter für Office-Foren
AddIn für Excel/Word 2000-2010 - komplett in VBA geschrieben von Lukas Mosimann
Projektbetreuung durch mumpel



Code erstellt und getestet in Office 12

Gruß, Mullit

Anzeige
AW: Nur Blätter als pdf drucken mit aktiver Checkbox
09.10.2015 16:47:35
Felix
Perfekt! Funktioniert genau so, wie ich's mir vorgestellt habe!
Vielen Dank Mullit!
Gruß Felix
;
Anzeige
Anzeige

Infobox / Tutorial

Nur Blätter als PDF drucken mit aktiver Checkbox


Schritt-für-Schritt-Anleitung

Um nur die Blätter einer Excel-Arbeitsmappe als PDF zu drucken, die eine aktive Checkbox haben, kannst du die folgenden Schritte ausführen:

  1. Öffne die Excel-Arbeitsmappe mit den Blättern und Checkboxen, die du als PDF speichern möchtest.

  2. Füge einen Button hinzu, um den Druckvorgang auszulösen. Gehe zu Entwicklertools > Einfügen > Button (Formularsteuerelement).

  3. Erstelle ein neues Makro für den Button, um die Blätter zu filtern und als PDF zu drucken. Du kannst den folgenden VBA-Code verwenden:

    Private Sub CommandButton1_Click()
       Dim objOLEObject As OLEObject
       Dim wksSheet As Worksheet
       Dim strPath As String
    
       Application.ScreenUpdating = False
       strPath = ThisWorkbook.Path & "\DeinPDF.pdf" ' Pfad anpassen
    
       For Each wksSheet In ThisWorkbook.Worksheets
           For Each objOLEObject In wksSheet.OLEObjects
               If objOLEObject.progID = "Forms.CheckBox.1" Then
                   If objOLEObject.Object.Value Then
                       wksSheet.Visible = xlSheetVisible
                   Else
                       wksSheet.Visible = xlSheetVeryHidden
                   End If
               End If
           Next objOLEObject
       Next wksSheet
    
       ActiveWorkbook.ExportAsFixedFormat _
           Type:=xlTypePDF, _
           Filename:=strPath, _
           Quality:=xlQualityStandard, _
           IncludeDocProperties:=True, _
           IgnorePrintAreas:=False, _
           OpenAfterPublish:=False
    
       Application.ScreenUpdating = True
    End Sub
  4. Passe den Pfad an, wo die PDF gespeichert werden soll.

  5. Teste den Button und aktiviere die gewünschten Checkboxen, bevor du auf den Button klickst.


Häufige Fehler und Lösungen

  • Fehler 1: PDF wird nicht erstellt.

    • Lösung: Überprüfe den angegebenen Speicherpfad. Stelle sicher, dass du Schreibrechte für diesen Ordner hast.
  • Fehler 2: Checkboxen werden nicht erkannt.

    • Lösung: Stelle sicher, dass die Checkboxen als ActiveX-Steuerelemente eingefügt wurden und überprüfe die Namen der Checkboxen im VBA-Code.

Alternative Methoden

Wenn du eine andere Methode bevorzugst, kannst du auch die Funktion „Drucken“ nutzen, um die gewünschten Blätter direkt als PDF zu drucken. Wähle hierzu:

  1. Datei > Drucken.
  2. Wähle den PDF-Drucker aus.
  3. Aktiviere die Checkboxen in den Blättern und drucke.

Praktische Beispiele

Angenommen, du hast folgende Blätter mit Checkboxen: „Blatt1“, „Blatt2“, „Blatt3“. Wenn „Blatt2“ und „Blatt3“ die Checkboxen aktiviert haben, dann wird nur diese beiden Blätter in die PDF-Datei exportiert.

Das Ergebnis ist eine PDF-Datei, die nur die aktiven Blätter enthält, was die Übersichtlichkeit erhöht und den Druckaufwand reduziert.


Tipps für Profis

  • Kontrollkästchen in PDF einfügen: Wenn du Checkboxen in die PDF-Datei einfügen möchtest, kannst du eine PDF-Bearbeitungssoftware verwenden, um interaktive Elemente hinzuzufügen.
  • Gesamte Arbeitsmappe als PDF speichern: Verwende den Befehl ActiveWorkbook.ExportAsFixedFormat, um alle Blätter gleichzeitig zu speichern. Du kannst jedoch vorher die Sichtbarkeit der Blätter steuern.

FAQ: Häufige Fragen

1. Wie erstelle ich eine Checkbox in Excel?
Um eine Checkbox in Excel einzufügen, gehe zu Entwicklertools > Einfügen und wähle die Checkbox aus. Klicke dann auf das Arbeitsblatt, um sie zu platzieren.

2. Kann ich mehrere Checkboxen gleichzeitig abfragen?
Ja, du kannst eine Schleife im VBA-Code verwenden, um alle Checkboxen in den Blättern abzufragen und die Sichtbarkeit entsprechend anzupassen.

3. Wie kann ich meine PDF-Datei nach dem Drucken automatisch öffnen?
Füge im ExportAsFixedFormat-Befehl die Option OpenAfterPublish:=True hinzu, um die PDF nach dem Drucken automatisch zu öffnen.

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