PDF-Erstellung

  • Excel

Es gibt 34 Antworten in diesem Thema. Der letzte Beitrag () ist von Zacki.

    PDF-Erstellung

    Ich möchte gern ein PDF einer Tabelle (Tabell3) erstellen und habe auch schon Code dazu gefunden. Leider ist dort ein Fehler enthalten, es kommt folgende Fehlermeldung: "Laufzeitfehler '5': Ungültiger Prozeduraufruf oder ungültiges Argument"

    In diesem Bereich wird der Fehler angezeigt:

    Quellcode

    1. ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfName, _
    2. Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
    3. OpenAfterPublish:=IIf(pdfOpenAfterPublish, True, False)


    Gesamter Code:

    Quellcode

    1. Sub AlsPDFSpeichern()
    2. Dim pdfName As String
    3. Dim pdfOpenAfterPublish As Boolean
    4. Dim olApp As Object
    5. Dim olOldBody As String
    6. Rem Rückfragen, ob Datei nach dem Erstellen geöffnet werden soll
    7. If MsgBox("Soll die PDF-Datei nach dem Erstellen angezeigt werden?", vbYesNo, "PDF anzeigen?") = vbYes Then pdfOpenAfterPublish = True
    8. Rem Pfad und Name der PDF-Datei
    9. pdfName = ThisWorkbook.Path & "\" & ThisWorkbook.Name & "_" & ActiveSheet.Name & ".pdf"
    10. Rem PDF-Datei erstellen. Funktioniert nur in Excel 2007 oder höher, nicht in Excel 2003 oder älter
    11. ActiveWorkbook.ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfName, _
    12. Quality:=xlQualityStandard, IncludeDocProperties:=False, IgnorePrintAreas:=False, _
    13. OpenAfterPublish:=IIf(pdfOpenAfterPublish, True, False)
    14. Rem Boolean-Variable "pdfOpenAfterPublish" zurücksetzen
    15. pdfOpenAfterPublish = False
    16. End Sub


    Hat Jemand eine Ahnung, was da schief läuft?? Danke schonmal im Voraus für dier Hilfe!

    PS: Ich habe sowohl Adobe Acrobat PDF als auch PDF-Creator auf dem PC.
    Das geht auch nicht... Jetzt kommt der Laufzeitfehler 424: Objekt erforderlich.

    Anscheinend hat doch aber der o.g. Code bei anderen bereits funktioniert, ich habe diesen daoch nur kopiert.... :)

    Hat noch Jemand eine Idee dazu?
    Ne, das war's auch nicht. der Fehler bleibt erhalten!

    Habe das nun mal etwas kürzer gebastelt, der Fehler bleibt leider erhalten... (Laufzeitfehler 5)

    Quellcode

    1. Sub AlsPDFSpeichern()
    2. Dim pdfName As String
    3. pdfName = ActiveWorkbook.Path & "\" & Left(ActiveWorkbook.Name, InStr(1, ActiveWorkbook.Name, ".") - 1) & ".pdf"
    4. Sheets("Rechnung").ExportAsFixedFormat Type:=xlTypePDF, Filename:=pdfName, Quality:=xlQualityStandard, _
    5. IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    6. End Sub

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Zacki“ ()

    Ich glaube, es liegt gar nicht am falschen Code.... So wie ich das inzwischen sehe, ist der Code wohl korrekt, da scheint irgend etwas anderes nicht zu stimmen!
    Hat irgend Jemand eine Idee dazu??? Gibt es irgend welche Voraussetzungen, die für die Ausführung des Codes erforderlich sind, wie z.b. ein ganz bestimmtes Programm zum umwandeln in PDF???
    Hab ich auch schon probiert. Das ist der Code, der dann erzeugt wird:

    Quellcode

    1. Sub Makro2()
    2. '
    3. ' Makro2 Makro
    4. ' PDF
    5. '
    6. '
    7. Range("D7").Select
    8. End Sub


    Ist leider nicht Erfolgreich, da steht nix drin....

    Zur Info, so gehe ich zur Zeit vor:
    1. Auf das entsprechende Tabellenblatt wechseln
    2. Datei, speichern unter, Adobe PDF
    3. Speichern der Mappe bestätigen
    4. Dateiname der PDF Datei eingeben
    5. PDF wird erzeugt und angezeigt

    Das wars, das muss doch aber auch einfacher gehen????
    Welches Problem ist denn noch übrig?
    Du schreibst doch das es mit Select-Befehl geht.

    Ich habe so etwas ähnliches in Erinnerung.
    Wenn man mehrere Sheets in ein PDF exportieren möchte, muss man alle diese Sheets selektieren.
    Von daher kann es durchaus sein, dass der Exporter irgendwie die Selection benötigt.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --
    Es ist noch immer das gleiche Problem welches von Anfang an da war! (Siehe Post Nr. 1 von mir) Wobei ich aber glaube, dass der Code korrekt ist, aber sicher bin ich mir nicht. Ich habe aber keine Ahnung, woran es scheitert???
    In welcher Zeile genau kommt der Fehler vor?
    Schau dir vor diesem Befehl die Variablen an, die du übergibst.
    Wenn dein ActiveWorkbook noch nicht gespeichert ist, ist der Pfad leer.
    Ausserdem solltest du statt dessen sowieso ThisWorkbook verwenden.
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --

    Zacki schrieb:

    Aber eine Idee, wo das Problem liegen könnte, hat keiner von Euch, oder???


    Es gibt zwei Sachen die es zu beachten gilt:
    1. Das Worksheet muss bereits min. einmal abgespeichert worden sein - sonst wirft FilePath = ActiveWorkbook.Path ... eine Exception. Laufzeitfehler '5': Ungültiger Prozeduraufruf oder ungültiges Argument
    2. Der Bereich wo gespeichert werden soll darf nicht leer sein - sonst bekommst du wieder eine Exeption. Laufzeitfehler '1004': Anwendungs- oder objektdefinierter Fehler

    Habs mal selbst ausprobiert und bin jetzt mit folgendem Code zufrieden (funktioniert):

    Visual Basic-Quellcode

    1. Public Sub SaveWorksheetAsPDF()
    2. Dim FilePath As String: FilePath = CreateObject("WScript.Shell").specialfolders("Desktop") & "\NotSaved_Example.pdf"
    3. '// Es kann keine PDF Datei erstellt werden, wenn die Excel Datei noch nie gespeichert wurde.
    4. If ThisWorkbook.Path <> "" Then
    5. FilePath = ThisWorkbook.Path & "\" & Left(ThisWorkbook.Name, InStr(1, ThisWorkbook.Name, ".") - 1) & ".pdf"
    6. End If
    7. '// .Worksheets(1) muss je nachdem angepast werden...
    8. Dim MyWorksheet As Worksheet: Set MyWorksheet = ThisWorkbook.Worksheets(1)
    9. On Error GoTo ErrorOccured
    10. MyWorksheet.ExportAsFixedFormat Type:=xlTypePDF, FileName:=FilePath, Quality:=xlQualityStandard, _
    11. IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
    12. Exit Sub
    13. ErrorOccured:
    14. '// Tritt auf wenn z.B. kein Inhalt zum Speichern im Worksheet vorhanden ist!
    15. MsgBox "Es ist ein Fehler beim speichern des Worksheets als PDF aufgetreten." & vbCrLf & vbCrLf & _
    16. "Description: " & Err.Description & vbCrLf & _
    17. "Source: " & Err.Source & vbCrLf & _
    18. "Number: " & Err.Number, vbCritical, "PDF Fehler"
    19. End Sub


    Gruß, FireEmerald

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FireEmerald“ () aus folgendem Grund: ActiveWorkbook -> ThisWorkbook

    @Zacki .Worksheets(1) bezieht sich auf das Worksheet mit der ID 1. Wenn du mehrere hast, muss die ID halt angepasst werden.

    Welches Worksheet welche ID hat siehst du hier: (Tabelle1 -> ID 1)


    Selbstverständlich kannst du auch über den Namen des Worksheets gehen. Wäre dann: .Worksheets("Namen")
    Dieser Part muss halt an das jeweils gewünschte Resultat angepasst werden.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „FireEmerald“ ()

    So, hab ich gemacht, habe die ID eingefügt... Es kommt aber trotzdem noch eine Fehlermeldung, die lautet: Es ist ein Fehler beim speichern des Worksheets als PDF aufgetreten. Description: Ungültiger Prozeduraufruf oder ungültiges Argument Source: VBAProject Number: 5
    Was soll ich damit anfangen??