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

Forumthread: VBA PDF von nur einem Tabellenblatt

VBA PDF von nur einem Tabellenblatt
03.11.2016 19:23:44
nur
Guten Ábend,
Kann mir jemand bei einem Code helfen?
Möchte mittels Makro ein Arbeitsblatt (von mehreren) meiner geöffneten Mappe als PDF mit Datum im Ursprungsordner speichern. (sollte im Hintergrund ablaufen- nur ein OK Hinweis, wenn erledigt)
Z.B das Tabellenblatt "Stückzahl" aus der geöffneten Mappe soll dann als "Stückzahl_Datum.PDF" im Ursprungsordner gespeichert- oder gedruckt werden. Der Rest der Mappe nicht.
Geht sowas überhaupt?
Gruß Andi
Anzeige

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA PDF von nur einem Tabellenblatt
03.11.2016 22:55:17
nur
Hallo Andi,
eine inensive suche in der RECHERCHE hätte dir eigentlich was brauchbares liefern können.
Ansonsten kannst du mit dem folgendne Makro dein Glück versuchen.
Gruß
Franz

Sub PDF_Drucken_Stueckliste()
Call PDF_Drucken(objSheet:=ActiveWorkbook.Sheets("Stückliste"))
End Sub
Sub PDF_Drucken(objSheet As Object, _
Optional ByVal bolZeit As Boolean = False, _
Optional ByVal varPfad As Variant, _
Optional ByVal varDefault As Integer = 1, _
Optional ByVal bolOpen As Boolean = False)
'Erstellt ein PDF des Blattes mit der Option auch zu Drucken
Dim strFilePDF As String, intAuswahl As Integer
If IsMissing(varPfad) Then
If objSheet.Parent.Path = "" Then
MsgBox "Vor der Ausführung des Makros muss die aktive Datei gespeichert " _
& "werden, damit das Verzeichnis ermittelt werden kann!", _
vbInformation + vbOKOnly, "Erstellen PDF"
Exit Sub
Else
varPfad = objSheet.Parent.Path
End If
End If
If Dir(varPfad, vbDirectory) = "" Then
MsgBox "Das Verzeichnis" & vbLf & varPfad & vbLf & "existiert nicht!", _
vbOKOnly + vbInformation, "Speichern PDF"
Else
strFilePDF = varPfad & Application.PathSeparator & objSheet.Name & " " _
& Format(Now, IIf(bolZeit, "YYYY-MM-DD hhmmss", "YYYY-MM-DD")) & ".pdf"
intAuswahl = Application.InputBox("1 = Speichern PDF" & vbLf _
& "2 = Speichern PDf und drucken", _
"Speichern PDF / Drucken - Blatt: " & objSheet.Name, _
varDefault, Type:=1)
Select Case intAuswahl
Case 0
'Abgebrochen
Case 1 'PDF speichern
objSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFilePDF, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
_
OpenAfterPublish:=bolOpen
MsgBox "PDF erstellt" & vbLf & strFilePDF, vbOKOnly, _
"Speichern PDF - Blatt: " & objSheet.Name
Case 2 'PDF speichern und drucken
objSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFilePDF, _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
_
OpenAfterPublish:=bolOpen
objSheet.PrintOut
MsgBox "PDF erstellt und gedruckt" & vbLf & strFilePDF, vbOKOnly, _
"Speichern PDF / Drucken - Blatt: " & objSheet.Name
End Select
End If
End Sub

Anzeige
AW: VBA PDF von nur einem Tabellenblatt
04.11.2016 20:02:38
nur
Danke Franz,
hatte in der RECHERCHE gesucht, leider nix gefunden. Dafür passt aber Dein Code ganz genau.
Respekt- hätte nicht gedacht- das der Code so umfangreich wird. Aber es geht- und ich komme auch langsam hinter die Geheimnisse VBA. Ein funktionierender Code, den ich leicht Anpassen kann- ist mir lieber- als ständig "VBA Laufzeitfehler" zu sehen.
So lerne ich es am besten.
Also Danke nochmals.
Andi
Anzeige
AW: VBA PDF von nur einem Tabellenblatt
05.11.2016 23:42:05
nur
Hallo Franz, das Makro ist super.
Eine Frage hätte ich noch- mein Tabellenblatt hat mehrere A4 Blätter nacheinander angereiht- es wird aber nur ein einziges A4 Blatt aus der Tabelle gedruckt. Muss ich da evtl. noch etwas im Druckbereich oder wo anders ändern, damit mir die gesamte Tabelle1 als PDF ausgegeben wird?
Konnte jetzt nichts im Makro ersehen, das es nur eine Seite als PDF druckt.
Oder irre ich mich?
Danke erst mal
LG Andi
Anzeige
AW: VBA PDF von nur einem Tabellenblatt
06.11.2016 13:54:28
nur
Hallo Andreas,
mit dem Parameter "IgnorePrintAreas" wird festgelegt, ob der definierte Druckbereich als PDF gespeichert werden soll oder alle benutzten Zellen des Tabellenblatts.
False --&gt Druckbereich
True --&gt alles
Du musst also den Druckbereich anpassen oder den Wert des Parameters ändern.
Falls die Blätter mit unterschiedlichen Einstellungen als PDF gespeichert werden sollen, dan ist es sinnvoll, diese Einstellung optional als weiteren Parameter zu übergeben.
Gruß
Franz
Anzeige
AW: VBA PDF von nur einem Tabellenblatt
06.11.2016 14:58:09
nur
Hallo Franz@fcs
Danke für die Beantwortung, habe beides in True geändert, einen Kommentar hinterlegt und alles geht wie es soll. So kann ich das besser auseinanderhalten.
Beide Varianten sind Sinnvoll. Werde mir mal bei gelegenheit noch eine msg Box dazu erstellen- "Alles Drucken", oder "nur eine Seite Drucken".
Super gelöst- großes Lob.
Gruß Andi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
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

PDF-Ausgabe eines einzelnen Tabellenblatts mit VBA


Schritt-für-Schritt-Anleitung

Um ein Arbeitsblatt als PDF zu speichern, kannst Du das folgende VBA-Makro verwenden. Dieses Makro speichert das aktive Blatt mit dem aktuellen Datum im Ursprungsordner.

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.
  2. Füge ein neues Modul hinzu: Klicke mit der rechten Maustaste auf „VBAProject (deine Datei)“ > Einfügen > Modul.
  3. Kopiere und füge den folgenden Code in das Modul ein:
Sub PDF_Drucken_Stueckliste()
    Call PDF_Drucken(objSheet:=ActiveWorkbook.Sheets("Stückliste"))
End Sub

Sub PDF_Drucken(objSheet As Object, _
Optional ByVal bolZeit As Boolean = False, _
Optional ByVal varPfad As Variant, _
Optional ByVal varDefault As Integer = 1, _
Optional ByVal bolOpen As Boolean = False)
    ' Erstellt ein PDF des Blattes mit der Option auch zu Drucken
    Dim strFilePDF As String, intAuswahl As Integer
    If IsMissing(varPfad) Then
        If objSheet.Parent.Path = "" Then
            MsgBox "Vor der Ausführung des Makros muss die aktive Datei gespeichert " _
            & "werden, damit das Verzeichnis ermittelt werden kann!", _
            vbInformation + vbOKOnly, "Erstellen PDF"
            Exit Sub
        Else
            varPfad = objSheet.Parent.Path
        End If
    End If
    If Dir(varPfad, vbDirectory) = "" Then
        MsgBox "Das Verzeichnis" & vbLf & varPfad & vbLf & "existiert nicht!", _
        vbOKOnly + vbInformation, "Speichern PDF"
    Else
        strFilePDF = varPfad & Application.PathSeparator & objSheet.Name & " " _
        & Format(Now, IIf(bolZeit, "YYYY-MM-DD hhmmss", "YYYY-MM-DD")) & ".pdf"
        intAuswahl = Application.InputBox("1 = Speichern PDF" & vbLf _
        & "2 = Speichern PDF und drucken", _
        "Speichern PDF / Drucken - Blatt: " & objSheet.Name, _
        varDefault, Type:=1)
        Select Case intAuswahl
            Case 0
                ' Abgebrochen
            Case 1 ' PDF speichern
                objSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFilePDF, _
                Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                OpenAfterPublish:=bolOpen
                MsgBox "PDF erstellt" & vbLf & strFilePDF, vbOKOnly, _
                "Speichern PDF - Blatt: " & objSheet.Name
            Case 2 ' PDF speichern und drucken
                objSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFilePDF, _
                Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, _
                OpenAfterPublish:=bolOpen
                objSheet.PrintOut
                MsgBox "PDF erstellt und gedruckt" & vbLf & strFilePDF, vbOKOnly, _
                "Speichern PDF / Drucken - Blatt: " & objSheet.Name
        End Select
    End If
End Sub
  1. Passe den Namen des Tabellenblatts „Stückliste“ an, falls nötig.
  2. Schließe den VBA-Editor und führe das Makro über ALT + F8 aus.

Häufige Fehler und Lösungen

  • Fehler: „Das Verzeichnis existiert nicht!“

    • Stelle sicher, dass die Datei gespeichert ist und ein gültiger Pfad angegeben wird.
  • Problem: Nur eine PDF-Seite speichern

    • Überprüfe den Druckbereich des Blatts. Setze IgnorePrintAreas auf False, um nur den definierten Druckbereich zu speichern.
  • Lösung: Wähle die gesamte Tabelle für die PDF-Ausgabe

    • Setze IgnorePrintAreas auf True, wenn Du die gesamte Tabelle als PDF speichern möchtest.

Alternative Methoden

Wenn Du nicht mit VBA arbeiten möchtest, kannst Du auch die Funktion „Speichern unter“ in Excel verwenden:

  1. Wähle das gewünschte Tabellenblatt aus.
  2. Klicke auf „Datei“ > „Speichern unter“.
  3. Wähle das PDF-Format aus und speichere es.

Diese Methode ist manuell und nicht automatisiert, aber einfach anzuwenden.


Praktische Beispiele

Hier sind einige Beispiele, wie Du das Makro anpassen kannst:

  • Mehrere Blätter als PDF speichern: Erstelle eine Schleife, die durch die gewünschten Blätter iteriert und jedes Blatt einzeln speichert.

  • PDF-Export mit benutzerdefinierten Dateinamen: Du kannst den Dateinamen dynamisch gestalten, indem Du zusätzliche Informationen hinzufügst, wie z.B. den Benutzernamen oder spezifische Daten.


Tipps für Profis

  • Fehlerbehandlung einfügen: Implementiere On Error Resume Next und entsprechende Fehlermeldungen, um die Benutzerfreundlichkeit zu erhöhen.
  • Makros zur Automatisierung verwenden: Du kannst das Makro so einstellen, dass es automatisch beim Öffnen einer bestimmten Datei ausgeführt wird.
  • Excel VBA-Befehle Übersicht: Nutze eine Übersicht der Excel VBA-Befehle, um effizienter arbeiten und Anpassungen vornehmen zu können.

FAQ: Häufige Fragen

1. Wie kann ich eine gesamte Excel-Datei als PDF speichern? Du kannst das gesamte Workbook speichern, indem Du ThisWorkbook.ExportAsFixedFormat verwendest.

2. Was muss ich tun, wenn ich nur eine PDF-Seite speichern möchte? Setze den Druckbereich korrekt und stelle sicher, dass IgnorePrintAreas auf False gesetzt ist.

3. Wo finde ich eine Übersicht über Excel VBA-Befehle? Eine umfassende Übersicht über Excel VBA-Befehle findest Du in der offiziellen Microsoft-Dokumentation oder verschiedenen Online-Ressourcen.

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