speichern als pdf
#1
Hallo!

Bin zufällig auf diese Url gestossen, nachdem die alte Seite nicht mehr existiert.
Bin ich wirklich der Erste der eine Frage stellt?
Bzw. funktioniert das Forum schon?
Ich versuchs einfach mal.

Ich habe vor einiger Zeit folgenden Code gefunden und der hat auch funktioniert.
Jetzt bekomme ich einen Fehler, wenn kein Dateipfad vordefiniert ist.
Feld "Speicherort" ist leer.
Code:
Sub Speichern_als_pdf()
Dim xlName As String
Dim xlPfad As String
Dim xlOpenAfterPublish As Boolean

'PDF-Öffnen-Abfrage erstellen
If MsgBox("Soll die PDF-Datei nach dem Erstellen angezeigt werden?", vbYesNo + vbQuestion, "Frage") = vbYes Then xlOpenAfterPublish = True

'Dateiname aus Zelle auslesen
xlName = Range("I1").Value

'Dateipfad aus Zelle auslesen
xlPfad = Range("Speicherort").Value

If xlPfad = "" Then
Dim varFilename As Variant

varFilename = Application.GetSaveAsFilename( _
                                    InitialFileName:=xlName, _
                                    FileFilter:="PDF (*.pdf), *.pdf", _
                                    Title:="als PDF speichern")

    If varFilename <> False Then
         ThisWorksheet.ExportAsFixedFormat _
                                  Type:=xlTypePDF, _
                                  Filename:=varFilename
    End If
End If

If xlPfad <> "" Then
With ActiveSheet
'PDF-File erstellen, in Dateipfad mit gleichem Namen speichern
     '.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & Left(ThisWorkbook.Name, InStrRev(ThisWorkbook.Name, ".") - 1), Quality:=xlQualityStandard, _
                          IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=IIf(xlOpenAfterPublish, True, False)

'PDF-File erstellen, in Dateipfad und unter in I1 angegebenen Namen speichern
     '.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & xlName, Quality:=xlQualityStandard, _
                          IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=IIf(xlOpenAfterPublish, True, False)
                          
'PDF-File erstellen, in Dateipfad im Tabellenblatt "Anleitung" in Zelle B27 angegeben und unter in I1 angegebenen Namen speichern
     .ExportAsFixedFormat Type:=xlTypePDF, Filename:=xlPfad & "\" & xlName, Quality:=xlQualityStandard, _
                          IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=IIf(xlOpenAfterPublish, True, False)


End With
End If

'Boolean-Variable einschalten
xlOpenAfterPublish = True

End Sub

Es geht bis zum Speichern Dialog. Wenn ich dann auf speichern klicke kommt eine Laufzeitfehler '424' Objekt erforderlich.
Dieser Teil wird als Fehler markiert:
ThisWorksheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=varFilename

Was ist da falsch?
LG Herbert
Windows 10
Office 365
Top
#2
Hallo Herbert, - ja Du bist unser erster neuer "Kunde" .

Ich kann Dir hier leider nicht helfen aber bin sicher, dass sich gleich einer um Dich kümmern wird.

Grüßle
_________ vom Nick
Top
#3
Hallo Herbert,

ja, es ist wohl so, Du bist der Erste hier.

Also, wenn es nur darum geht, daß Excel rumzickt, wenn kein Pfad eingegeben wurde, dann würde ich an Deiner Stelle
ganz einfach die Zelle abfragen, in der der String steht und eine Msgbox anzeigen lassen, in der darauf hingewiesen
wird, daß noch kein Pfad eingegeben wurde.
Das gleiche würde ich auch gleich für die Zelle machen, in der der Name als String steht.

und wow, ... nun bin ich wohl der erste Antworter.
... Nee, bin ich nicht. Nick war schneller

Gruß, Peter
Top
#4
Hallo Klaus-Peter,

Danke für Deine Antwort.

Eigentlich sollte folgender Teil dafür da sein, dass sich der Anwender den Pfad selbst mit dem Speichern unter Dialog aussucht, wenn er das Tabellenblatt nur einmal speichert.
Wenn ich das Tabellenblatt jedoch mehrmals, nach jeder Änderung, speichere, soll ein Pfad angegeben werden in den das Tabellenblatt automatisch mit einem vorgegebenen Namen ohne weitere Nachfrage gespeichert wird.
Code:
If xlPfad = "" Then
Dim varFilename As Variant

varFilename = Application.GetSaveAsFilename( _
                                    InitialFileName:=xlName, _
                                    FileFilter:="PDF (*.pdf), *.pdf", _
                                    Title:="als PDF speichern")

    If varFilename <> False Then
        ThisWorksheet.ExportAsFixedFormat _
                                  Type:=xlTypePDF, _
                                  Filename:=varFilename
    End If
End If
Ich will dem Anwender ersparen, dass er für ein einmaliges Speichern einen Pfad angeben muss.
Viele Anwender schaffen das nicht fehlerfrei.
Ein Name wird immer vorgeschlagen.
LG Herbert
Windows 10
Office 365
Top
#5
Hallo Herbert,

und wenn Du beim Öffnen der Datei gleich den Pfad in die Zelle schreiben läßt?
Beispielsweise den, in dem sich diese Datei befindet?

Gruß, Peter
Top
#6
Hallo Peter

Wie kann ich den Pfad in diese Zelle schreiben?

Funktioniert das auch bei einer Excel Vorlage mit dem richtigen Pfad.

Denn mit dem folgenden Code nimmt er nicht den richtigen Pfad, wenn die Vorlage mittels Doppelklick geöffnet wird. Damit wird die Datei in den Standardspeicherordner von Excel gespeichert.
Code:
.ExportAsFixedFormat Type:=xlTypePDF, Filename:=ThisWorkbook.Path & "\" & xlName, Quality:=xlQualityStandard, _
                          IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=IIf(xlOpenAfterPublish, True, False)
LG Herbert
Windows 10
Office 365
Top
#7
Hallo Herbert,

wo bekommt man eigentlich solche Codes her?

Option Explicit

Private Sub Workbook_Open()
MsgBox ThisWorkbook.FullName & Chr(10) & Chr(10) _
& "Der Pfad lautet:" & ThisWorkbook.Path & Chr(10) _
& "Der Name lautet:" & ThisWorkbook.Name & Chr(10) & Chr(10) _
& """Klicke auf OK"" ... und ich schreibe dann" & Chr(10) _
& " in ""Zelle A1"" den Pfadnamen" & Chr(10) _
& " in ""Zelle D1"" den Dateinamen.", vbYesNo
If vbYes Then
Cells(1, 1) = ThisWorkbook.Path
Cells(1, 4) = ThisWorkbook.Name
End If
End Sub
Code eingefügt mit VBA in HTML 2.3

Diesen Code in "DieseArbeitsmappe"
Wenn Du die MsgBox und das IF wegläßt, dann bleiben noch zwei Zeilen übrig.

Es wird in Zelle A1 und in Zelle D1 ein Eintrag gemacht.
Wenn in diesen Zellen bei Dir was drinnen steht, nimm zum Testen eine leere Datei.

Gruß, Peter
Top
#8
Hallo Peter,

solche Codes bekommt man mit der Suche im Internet. Wenn man sich nicht gut auskennt, nimmt man was man kriegen kann, solange es funktioniert.

Ich versuche immer zuerst die Suche im Internet ob ich damit mein Problem lösen kann und frage erst dann im Forum.
Dadurch kommt es sehr oft für die gleiche Aufgabe zu unterschiedlichen Zugängen.

Zu Deinem Code.
Wenn direkt die Vorlage geöffnet wird (rechte Maustaste öffnen), funktionert das.
Aber wenn aus der Vorlage eine neue Datei gemacht wird (Doppelklick auf die Vorlagendatei), dann wird kein Pfad angezeigt.
Im Prinzip gleiches Problem wie bei o. g. Code.

Ich kann das jetzt nicht mehr weiter testen, vielleicht schaffe ich es am Wochenende, ansonsten melde ich mich am Montag nochmal.

Danke vorerst für deine Hilfe.

P.S. Ich finde es großartig, dass das Forum in neuer Form weiterbesteht.
Meiner Meinung nach war das Clever-Forum immer das beste Excelforum.
Im alten Forum wurde ich schon sehr oft geholfen!;)
LG Herbert
Windows 10
Office 365
Top
#9
Hi Herbert,

(11.04.2014, 17:10)herbert0803 schrieb: Zu Deinem Code.
Wenn direkt die Vorlage geöffnet wird (rechte Maustaste öffnen), funktionert das.
Aber wenn aus der Vorlage eine neue Datei gemacht wird (Doppelklick auf die Vorlagendatei), dann wird kein Pfad angezeigt.
Im Prinzip gleiches Problem wie bei o. g. Code.

Wenn Du die Vorlage per Doppelklick öffnest, ist es eine neue Datei, die erst dann einen Pfad und Dateinamen hat, wenn sie ein Mal abgespeichert wurde.

Deswegen klappt das nicht.
Top
#10
Hallo Herbert,

freut mich, daß es Dir bei uns gefällt.
Du darfst gerne ein bischen Reklame für uns machen.

Übrigens:
Wenn direkt die Vorlage geöffnet wird (rechte Maustaste öffnen), funktionert das.
Aber wenn aus der Vorlage eine neue Datei gemacht wird (Doppelklick auf die Vorlagendatei), dann wird kein Pfad angezeigt.
Im Prinzip gleiches Problem wie bei o. g. Code.

Stimmt, aber das liegt daran, daß, so wie ich das programmiert habe, die Zellen beim Öffnen der Datei beschrieben werden, und das war es dann.

Wenn Du das anders haben willst, dann brauchen die Helfer schon den Hinweis, WANN, WIE und in WAS der Dateiname sich ändern soll.
Ansonsten lasse ich mir bis Montag was Nettes einfallen Wink))

Gruß, Peter
Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste