Microsoft Excel

Herbers Excel/VBA-Archiv

Informationen und Beispiele zum Thema MsgBox
BildScreenshot zu MsgBox MsgBox-Seite mit Beispielarbeitsmappe aufrufen
Informationen und Beispiele zum Thema CommandButton
BildScreenshot zu CommandButton CommandButton-Seite mit Beispielarbeitsmappe aufrufen

Tabellenblätter einzeln als PDF speichern


Betrifft: Tabellenblätter einzeln als PDF speichern von: Alba
Geschrieben am: 02.02.2018 08:46:25

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.



Hoffe ich habe es richtig erklärt.
Danke für jede Hilfe

  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Sepp
Geschrieben am: 02.02.2018 09:14:24

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



  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Alba
Geschrieben am: 02.02.2018 10:52:23

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



  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Sepp
Geschrieben am: 02.02.2018 11:13:50

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



  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Alba
Geschrieben am: 02.02.2018 12:06:42

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?


  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Sepp
Geschrieben am: 02.02.2018 12:14:18

Hallo Alba,

und was wird im Code markiert? Ich habe auch xl2016.

Gruß Sepp



  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Alba
Geschrieben am: 02.02.2018 12:36:34

Dieser Teil ist dann Gelb markiert!

 objSh.ExportAsFixedFormat Type:=xlTypePDF, _
            Filename:=strFilename & objSh.Name & "-" & ".pdf", Quality:=xlQualityStandard, _
            IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False



  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Sepp
Geschrieben am: 02.02.2018 12:52:17

Hallo Alba,

läuft tadellos!

Hast du vollen Zugriff auf den Speicherpfad?



Gruß Sepp



  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Alba
Geschrieben am: 02.02.2018 12:41:12

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



  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Sepp
Geschrieben am: 02.02.2018 12:54:52

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



  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Alba
Geschrieben am: 02.02.2018 14:03:11

Hallo Sepp,

ist komisch bin zwar am Firmen Rechner aber auf das Laufwerk C wo ich Speicher habe ich vollen Zugriff!


  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Alba
Geschrieben am: 02.02.2018 14:04:34

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?


  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Alba
Geschrieben am: 02.02.2018 14:06:03

Hallo Sepp,
kann es vielleicht am PDF-Programm liegen? Habe "Adobe Acrobat DC".


  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Sepp
Geschrieben am: 02.02.2018 14:45:42

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



  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Alba
Geschrieben am: 02.02.2018 17:29:24

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.


  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Sepp
Geschrieben am: 02.02.2018 17:39:22

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



  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Alba
Geschrieben am: 02.02.2018 17:58:00

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?


  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Sepp
Geschrieben am: 02.02.2018 18:01:40

Hallo Alba,

poste deine Mailadresse, dann schreib ich dir.

Gruß Sepp



  

Betrifft: AW: Tabellenblätter einzeln als PDF speichern von: Alba
Geschrieben am: 02.02.2018 21:48:36

Hallo Sepp
Meine Email Adresse ist
alba0782@yahoo.de

Besten Dank für alles!


  

Betrifft: Mailadresse funktioniert nicht! o.T. von: Sepp
Geschrieben am: 02.02.2018 22:24:44

Gruß Sepp



  

Betrifft: AW: Mailadresse funktioniert nicht! o.T. von: Alba
Geschrieben am: 03.02.2018 22:32:47

Hallo Sepp
Sorry das war alba0782@yahoo.com


Beiträge aus dem Excel-Forum zum Thema "Tabellenblätter einzeln als PDF speichern"