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

Forumthread: Tabellenblätter einzeln als PDF speichern

Tabellenblätter einzeln als PDF speichern
02.02.2018 08:46:25
Alba
Hallo und guten Tag
ich bin neu hier und leider Anfänger!
Und Arbeite mit Excel 2016.
Ich versuche einzelne Blätter als PDF in auszuwählende Ordner zu speichern, mit bestimmten Dateiennamen aus einem Blatt was nicht als PDF erzeugt werden soll (da wären die Plätze der Daten für den Dateiennamen (D4, D3, D2, B14) wähle ich diese im Code aus erstellt er mir aber aus dem Blatt auch eine PDF. Genau gesagt sollte, nach Möglichkeit, der Dateiname so aussehen JJJJ_MM_TT_B14_D4_D3_D2_B14_Blattname.pdf.
Des Weiteren Funktioniert der Code soweit das die PDF Dateien erstellt werden aber anstatt die MsgBox aufgeht kommt leider der Laufzeitfehler 1004.
Userbild
Hoffe ich habe es richtig erklärt.
Danke für jede Hilfe
Anzeige

20
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 09:14:24
Sepp
Hallo Alba,
du hast 2 mal B14 im Dateinamen!

Private Sub CommandButton3_Click()
Dim strPath As String, strFilename As String
Dim objSh As Worksheet
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ThisWorkbook.Path
.Title = "PDF-Export Ordnerauswahl"
.ButtonName = "Erstellen"
.InitialView = msoFileDialogViewList
If .Show = -1 Then
strPath = .SelectedItems(1)
If Right(strPath, 1)  "\" Then strPath = strPath & "\"
End If
End With
If Len(strPath) Then
With Sheets("Vorgaben") 'Tabelle mit den Vorgaben - Anpassen!
strFilename = strPath & Format(Date, "yyyy_mm-dd_") & .Range("B14") & "_" & _
.Range("D4") & "_" & .Range("D3") & "_" & .Range("D2") & "_" & _
.Range("B14") & "_"
End With
For Each objSh In ThisWorkbook.Worksheets
Select Case objSh.Name
Case "Vorgaben", "Tabelle1"  'Tabellen die NICHT gedruckt werden - Anpassen!
Case Else
objSh.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strFilename & objSh.Name & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Select
Next
MsgBox "PDF-Dateien wurden erstellt!"
End If
End Sub
Gruß Sepp

Anzeige
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 10:52:23
Alba
Hallo Sepp
ich habe den Code jetzt soweit angepasst und anstelle: Format(Date, "yyyy_mm-dd_") das rein gemacht: Format(.Range("D10")) & "_"
Da ich selbst auch falsch gedacht habe es muss nämlich das "Datum" was im Protokoll steht verwendet werden. Jetzt wird mir aber immer noch der Laufzeitfehler 1004 Angezeigt und nicht die MsgBox und das Datum in der Tabelle (Format(.Range("D10")) & "_")ist im Format JJJJ.MM.TT und in der erzeugten PDF wird es zu TT.MM.JJJJ kann man das ändern?
Private Sub CommandButton3_Click()
Dim strPath As String, strFilename As String
Dim objSh As Worksheet
With Application.FileDialog(msoFileDialogFolderPicker)
.InitialFileName = ThisWorkbook.Path
.Title = "PDF-Export Ordnerauswahl"
.ButtonName = "Erstellen"
.InitialView = msoFileDialogViewList
If .Show = -1 Then
strPath = .SelectedItems(1)
If Right(strPath, 1)  "\" Then strPath = strPath & "\"
End If
End With
If Len(strPath) Then
With Sheets("Bauteil")
strFilename = strPath & Format(.Range("D10")) & "_" & .Range("B15") & "_" & _
.Range("D4") & "_" & .Range("D3") & "_" & .Range("D2") & "_"
End With
For Each objSh In ThisWorkbook.Worksheets
Select Case objSh.Name
Case "Vorgaben", "Bauteil"
Case Else
objSh.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strFilename & objSh.Name & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End Select
Next
MsgBox "PDF-Dateien wurden erstellt!"
End If
End Sub

Anzeige
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 11:13:50
Sepp
Hallo Alba,
Private Sub CommandButton3_Click()
  Dim strPath As String, strFilename As String
  Dim objSh As Worksheet

  With Application.FileDialog(msoFileDialogFolderPicker)
    .InitialFileName = ThisWorkbook.Path
    .Title = "PDF-Export Ordnerauswahl"
    .ButtonName = "Erstellen"
    .InitialView = msoFileDialogViewList
    If .Show = -1 Then
      strPath = .SelectedItems(1)
      If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
    End If
  End With

  If Len(strPath) Then
    With Sheets("Bauteil")
      strFilename = strPath & .Range("D10").Text & "_" & .Range("B15") & "_" & _
        .Range("D4") & "_" & .Range("D3") & "_" & .Range("D2") & "_"
    End With

    For Each objSh In ThisWorkbook.Worksheets
      Select Case objSh.Name
        Case "Vorgaben", "Bauteil"
        Case Else
          objSh.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=strFilename & objSh.Name & ".pdf", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
      End Select
    Next
    MsgBox "PDF-Dateien wurden erstellt!"
  End If
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

also bei mir läuft der Code ohne Probleme! Hast du in D2:D4 oder B15 Text stehen, der ungültige Zeichen im Bezug auf den Dateinamen enthält?
Gruß Sepp

Anzeige
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 12:06:42
Alba
Also der Dateiname wird auch richtig geschrieben und die PDF auch erzeugt nur dann geht es nicht weiter also es kommt nur das Fenster mit dem "Laufzeitfehler" nicht das "PDF-Dateien wurden erstellt!".
Kann es daran liegen das ich Excel 2016 habe?
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 12:14:18
Sepp
Hallo Alba,
und was wird im Code markiert? Ich habe auch xl2016.
Gruß Sepp

Anzeige
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 12:36:34
Alba
Dieser Teil ist dann Gelb markiert!
 objSh.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strFilename & objSh.Name & "-" & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Anzeige
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 12:52:17
Sepp
Hallo Alba,
läuft tadellos!
Hast du vollen Zugriff auf den Speicherpfad?
Gruß Sepp

AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 12:41:12
Alba
Wo wir gerade dabei sind ist es möglich an der Stelle (siehe unten) sich noch auf die Zelle "D14" zu verweisen?
 objSh.ExportAsFixedFormat Type:=xlTypePDF, _
Filename:=strFilename & objSh.Name & "-"Ist es hier möglich noch einen Wert aus " _
D14" einzufügen? & ".pdf", Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

Anzeige
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 12:54:52
Sepp
Hallo Alba,
B14 aus dem Tabellenblatt das gedruckt wird?
Dann so.
           objSh.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=strFilename & objSh.Name & "-" & objSh.Range("D14") & ".pdf", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Gruß Sepp

Anzeige
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 14:03:11
Alba
Hallo Sepp,
ist komisch bin zwar am Firmen Rechner aber auf das Laufwerk C wo ich Speicher habe ich vollen Zugriff!
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 14:04:34
Alba
Hallo Sepp,
Jetzt wird es leider noch Komplizierter beim Tabellenblatt UT ist es "D14" aber beim andern Blatt (MT) ist es "V40" geht das auch?
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 14:06:03
Alba
Hallo Sepp,
kann es vielleicht am PDF-Programm liegen? Habe "Adobe Acrobat DC".
Anzeige
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 14:45:42
Sepp
Hallo Alba,
das PDF-Programm ist egal, es wird direkt von Excel eine PDF erstellt, ohne irgend ein Fremdprogramm.
Direkt auf "C.\" kann man normalerweise nicht speichern!
Bezüglich des Dateinamens musst du schon präziser werden! Welche Zellen von welchem Blatt sollen wo im Namen stehen?
Bei den ständigen Änderungen blickt ja keiner mehr durch!
Gruß Sepp

Anzeige
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 17:29:24
Alba
Also ich hab immer zum testen auf Desktop gespeichert. Hab jetzt auch auf meinen Privat Laptop es versucht aber immer kommt Laufzeitfehler.
Der Dateiname sollte so aussehen:
Datum aus "D10" JJJJ.MM.TT_"B15"_"D4"_"D3"_"D2"_ (bis hier alles aus Ballt1 (Bauteil) dann die jeweiligen Blatt Namen der Blätter (MT, UT)-danach jeweils für das MT Blatt den Wert aus "Z42" und für UT Blatt aus "V40" hoffe man versteht es.
Danke für deine gute Hilfe
Wenn es einfacher wäre könnte ich die Tabelle auch per Email schicken.
Anzeige
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 17:39:22
Sepp
Hallo Alba,
Modul Modul2
Option Explicit 
 
Private Sub CommandButton3_Click() 
  Dim strPath As String, strFilename As String, strName2 As String 
  Dim objSh As Worksheet 
 
  With Application.FileDialog(msoFileDialogFolderPicker) 
    .InitialFileName = ThisWorkbook.Path 
    .Title = "PDF-Export Ordnerauswahl" 
    .ButtonName = "Erstellen" 
    .InitialView = msoFileDialogViewList 
    If .Show = -1 Then 
      strPath = .SelectedItems(1) 
      If Right(strPath, 1) <> "\" Then strPath = strPath & "\" 
    End If 
  End With 
 
  If Len(strPath) Then 
    With Sheets("Bauteil") 
      strFilename = strPath & .Range("D10").Text & "_" & .Range("B15") & "_" & _
        .Range("D4") & "_" & .Range("D3") & "_" & .Range("D2") & "_" 
    End With 
 
    For Each objSh In ThisWorkbook.Worksheets 
      Select Case objSh.Name 
        Case "Vorgaben", "Bauteil" 
        Case Else 
          If objSh.Name = "MT" Then strName2 = objSh.Range("Z42") 
          If objSh.Name = "UT" Then strName2 = objSh.Range("V40") 
          objSh.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=strFilename & objSh.Name & strName2 & ".pdf", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False 
      End Select 
    Next 
    MsgBox "PDF-Dateien wurden erstellt!" 
  End If 
End Sub 
 
 

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 16 - mit VBAHTML 12.6.0

Zum Laufzeitfehler fällt mir nichts mehr ein, dazu müsste ich deine Datei sehen.
Gruß Sepp

Anzeige
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 17:58:00
Alba
Hallo Sepp
Super der Name wird so erstellt wie ich ihn haben will!
Wegen den Laufzeitfehler, könnte ich dir die Datei wie gesagt per Email schicken.
Finde ich deine Email Adresse irgendwo hier?
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 18:01:40
Sepp
Hallo Alba,
poste deine Mailadresse, dann schreib ich dir.
Gruß Sepp

Anzeige
AW: Tabellenblätter einzeln als PDF speichern
02.02.2018 21:48:36
Alba
Hallo Sepp
Meine Email Adresse ist
alba0782@yahoo.de
Besten Dank für alles!
Mailadresse funktioniert nicht! o.T.
02.02.2018 22:24:44
Sepp
Gruß Sepp

AW: Mailadresse funktioniert nicht! o.T.
03.02.2018 22:32:47
Alba
Hallo Sepp
Sorry das war alba0782@yahoo.com
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

Tabellenblätter einzeln als PDF speichern


Schritt-für-Schritt-Anleitung

  1. Öffne Excel: Stelle sicher, dass Du die richtige Excel-Version (z.B. Excel 2016) verwendest.
  2. Öffne das VBA-Editor-Fenster: Drücke ALT + F11.
  3. Erstelle ein neues Modul: Klicke auf Einfügen und wähle Modul.
  4. Füge den folgenden Code ein:
Private Sub CommandButton3_Click()
    Dim strPath As String, strFilename As String, strName2 As String
    Dim objSh As Worksheet

    With Application.FileDialog(msoFileDialogFolderPicker)
        .InitialFileName = ThisWorkbook.Path
        .Title = "PDF-Export Ordnerauswahl"
        .ButtonName = "Erstellen"
        .InitialView = msoFileDialogViewList
        If .Show = -1 Then
            strPath = .SelectedItems(1)
            If Right(strPath, 1) <> "\" Then strPath = strPath & "\"
        End If
    End With

    If Len(strPath) Then
        With Sheets("Bauteil")
            strFilename = strPath & .Range("D10").Text & "_" & .Range("B15") & "_" & _
                          .Range("D4") & "_" & .Range("D3") & "_" & .Range("D2") & "_"
        End With

        For Each objSh In ThisWorkbook.Worksheets
            Select Case objSh.Name
                Case "Vorgaben", "Bauteil"
                    ' Skip these sheets
                Case Else
                    If objSh.Name = "MT" Then strName2 = objSh.Range("Z42")
                    If objSh.Name = "UT" Then strName2 = objSh.Range("V40")
                    objSh.ExportAsFixedFormat Type:=xlTypePDF, _
                        Filename:=strFilename & objSh.Name & strName2 & ".pdf", Quality:=xlQualityStandard, _
                        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
            End Select
        Next
        MsgBox "PDF-Dateien wurden erstellt!"
    End If
End Sub
  1. Passe den Code an: Ändere die Zellreferenzen nach Bedarf.
  2. Starte das Makro: Klicke auf den Button, um die PDFs zu erstellen.

Häufige Fehler und Lösungen

  • Laufzeitfehler 1004: Dieser Fehler tritt häufig auf, wenn der Pfad oder der Dateiname ungültige Zeichen enthält. Überprüfe die Inhalte der Zellen, die im Dateinamen verwendet werden.
  • PDF wird nicht erstellt: Stelle sicher, dass Du die erforderlichen Zugriffsrechte auf den Speicherort hast.
  • Falsches Datumsformat: Achte darauf, dass das Datum in der Zelle im richtigen Format (JJJJ.MM.TT) vorliegt.

Alternative Methoden

Wenn Du kein VBA verwenden möchtest, kannst Du auch die Excel-Funktion "Drucken" nutzen:

  1. Wähle das gewünschte Tabellenblatt aus.
  2. Gehe zu Datei > Drucken.
  3. Wähle "Microsoft Print to PDF" als Drucker.
  4. Klicke auf Drucken und wähle den Speicherort.

Diese Methode eignet sich gut, wenn Du nur ein einzelnes Tabellenblatt als PDF speichern möchtest.


Praktische Beispiele

  • Einzelnes Tabellenblatt speichern: Um nur ein Tabellenblatt als PDF zu speichern, kannst Du den Namen des Blattes in das Makro anpassen, sodass nur dieses Blatt exportiert wird.

  • Mehrere Tabellenblätter speichern: Setze im Code eine Schleife ein, um mehrere Blätter nacheinander als PDFs zu speichern.

For Each objSh In ThisWorkbook.Worksheets
    If objSh.Name <> "Vorgaben" Then
        ' Exportiere das Blatt als PDF
    End If
Next

Tipps für Profis

  • Benutzerdefinierte Dateinamen: Verwende Daten aus verschiedenen Zellen, um dynamische Dateinamen zu erstellen.
  • Fehlermeldungen anpassen: Füge spezifische Fehlermeldungen hinzu, um die Nutzung zu erleichtern.
  • Makro schützen: Überlege, das Makro zu schützen, um zu verhindern, dass andere Benutzer die Logik ändern.

FAQ: Häufige Fragen

1. Kann ich mehrere Tabellenblätter in einer PDF speichern?
Ja, Du kannst den Code so anpassen, dass er mehrere Tabellenblätter in einer einzelnen PDF-Datei speichert.

2. Was kann ich tun, wenn das PDF nicht geöffnet wird?
Stelle sicher, dass der Speicherort korrekt ist und Du über die erforderlichen Berechtigungen verfügst.

3. Wie kann ich das Format des Dateinamens ändern?
Ändere die entsprechenden Zellreferenzen im VBA-Code, um das gewünschte Format zu erhalten.

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