speichern als pdf
#11
Hallo!

Was mir auffällt:
varFilename <> "Falsch" ist im Deutschen besser und verursacht weniger Fehler.

Gruß, René
Top
#12
Hallo,

der Hinweis ist mir klar.
(11.04.2014, 17:13)Rabe schrieb: 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.

Gibt es eine Möglichkeit den Dateispeicherort der Ursprungs-Vorlagendatei auszulesen und in ein Feld, der neuen Datei, das ich als Name definiert habe zu schreiben?

Grundsätzlich wollte ich mit diesem Code nur den Speichern unter Dialog öffnen und den Dateityp pdf voreinstellen, wenn der Pfad nicht angegeben wird.
Code:
'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
Ich glaube, dass ich den Code im alten Cleverforum bekommen habe, weis aber nicht mehr von wem.

Da ich mehr ein Sammler von fertigen Codes und deren Anpassung an meine Arbeitsmappe bin, weis ich ganz ehrlich auch gar nicht was diese Codezeilen bedeuten.
Code:
If varFilename <> False Then
        ThisWorksheet.ExportAsFixedFormat _
                                  Type:=xlTypePDF, _
                                  Filename:=varFilename
    End If
Vielleicht kann mir das jemand erklären.
LG Herbert
Windows 10
Office 365
Top
#13
Hi Herbert,

(14.04.2014, 10:31)herbert0803 schrieb: Da ich mehr ein Sammler von fertigen Codes und deren Anpassung an meine Arbeitsmappe bin, weis ich ganz ehrlich auch gar nicht was diese Codezeilen bedeuten.
Code:
If varFilename <> False Then
        ThisWorksheet.ExportAsFixedFormat _
                                  Type:=xlTypePDF, _
                                  Filename:=varFilename
    End If
Vielleicht kann mir das jemand erklären.

Ich denke, das ist so:
Wenn die Variable "Filename" nicht leer ist, dann exportiere das Arbeitsblatt als PDF mit dem Inhalt der Variablen als Datei-Namen.
Top
#14
Hallo zusammen,

Danke für die Hinweise.
Ich habe mich selbst noch ein wenig "gespielt" und so scheint es für meine Bedürnisse zu funktionieren.
PHP-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
        With ActiveSheet
        .ExportAsFixedFormat Type:=xlTypePDF, Filename:=varFilename, Quality:=xlQualityStandard, IgnorePrintAreas:=False, OpenAfterPublish:=IIf(xlOpenAfterPublish, True, False)
        End With
    End If
End If

If xlPfad <> "" Then
With ActiveSheet
'
PDF-File erstellenin 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 erstellenin 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 erstellenin Dateipfad im Tabellenblatt "Anleitung" in Zelle B27 angegeben und unter in I1 angegebenen Namen speichern
     
.ExportAsFixedFormat Type:=xlTypePDFFilename:=xlPfad "\" & xlName, Quality:=xlQualityStandard, _
                          IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=IIf(xlOpenAfterPublish, True, False)


End With
End If

'Boolean-Variable einschalten
xlOpenAfterPublish = True

End Sub 

Falls euch noch was auffällt, was besser oder kürzer programmiert werden könnte, bitte ich um Rückmeldung.
Ansonsten funktioniert es jetzt.
Wenn in der Zelle Speicherort keine Daten stehen, wird der Speichern unter Dialog geöffnet. Wenn dort Daten stehen, wird das Tabellenblatt unter dem eingetragenen Pfad als pdf gespeichert.

Noch eine grundsätzliche Frage:
Welche Methode zum Einfügen von Code ist die bessere oder gewünschte, Normal oder PHP?
LG Herbert
Windows 10
Office 365
Top
#15
Hi,

das iif wird nicht benötigt da ja über die Abfrage True für xlOpenAfterPublish vergeben werden kann.
und den Export könnte man über eine eigene Sub machen mit Übergabeparametern.

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
        Call export(varFilename, xlOpenAfterPublish)
    End If
End If
If xlPfad <> "" Then
     Call export(xlPfad & "\" & xlName, xlOpenAfterPublish)
End If
End Sub

Sub export(strFile As Variant, BolP As Boolean)
     ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:=strFile, Quality:=xlQualityStandard, _
                        IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=BolP
End Sub

lg Chris
lg Chris
Feedback nicht vergessen.
[Bild: v.gif]
3a2920576572206973742064656e20646120736f206e65756769657269672e
Top
#16
Hallo Chris,

mit Deinem Code funktioniert das wunderbar und er ist etwas kürzer.

Danke!
LG Herbert
Windows 10
Office 365
Top


Gehe zu:


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