11.04.2014, 18:25
Seiten: 1 2
14.04.2014, 09:31
Hallo,
der Hinweis ist mir klar.
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.
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.
Vielleicht kann mir das jemand erklären.
der Hinweis ist mir klar.
(11.04.2014, 16: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
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
14.04.2014, 11:05
Hi Herbert,
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.
(14.04.2014, 09: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.
Vielleicht kann mir das jemand erklären.Code:If varFilename <> False Then
ThisWorksheet.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=varFilename
End If
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.
14.04.2014, 13:52
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.
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?
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 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
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?
14.04.2014, 14:17
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.
lg Chris
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
14.04.2014, 16:17
Hallo Chris,
mit Deinem Code funktioniert das wunderbar und er ist etwas kürzer.
Danke!
mit Deinem Code funktioniert das wunderbar und er ist etwas kürzer.
Danke!
Seiten: 1 2