So meine Lieben, die Lösung ist fertig und funktioniert:
Option Explicit
Public Sub Save_As_PDF()
Dim i As Integer, PDFindex As Integer
With Application.FileDialog(msoFileDialogSaveAs)
PDFindex = 0
For i = 1 To .Filters.Count
If InStr(VBA.UCase(.Filters(i).Description), "PDF") > 0 Then PDFindex = i
Next
.Title = "PDF"
'Speicherort-Abfrage und erzeugung des Dateinamens aus Feldern der Excel-Datei.
.InitialFileName = "C:\" & "Mustertext" & Space(1) & Range("Tabelle1!A1") & Space(1) & Range("Tabelle1!A2") & Space(1) & Format(Date, "YYYY-MM-DD")
.FilterIndex = PDFindex
If .Show Then
'Hier wird eine PDF aus einem bestimmten Bereich eines bestimmten Tabellenblatt erzeugt.
Sheets("Tabelle2").Range("A1:G50").ExportAsFixedFormat Type:=xlTypePDF, Filename:=.SelectedItems(1), _
Quality:=xlQualityStandard, IncludeDocProperties:=True, IgnorePrintAreas:=False, Openafterpublish:=True
End If
End With
End Sub
So, ich glaube das ist ganz gut gelöst, relativ smart jedenfalls. Was dort nun passiert ist folgendes: Sobald man das Modul ausführt, will es einen abgesteckten Bereich, in diesem Falle unser Beispiel: Tabelle2 - Zelle A1 bis G50 als PDF abspeichern. Das funktioniert auch. Der Dateiname aber wird aus Tabelle1 generiert, warum erkläre ich jetzt.
In meiner Datei benutze ich Tabelle1 (Eingabe) dafür, um Informationen einzugeben, die wichtig sind für das spätere PDF Formular, Kundendaten, Zahlen die berechnet werden, Datum der Gültigkeit etc. In Tabelle2 (Ausgabe) befindet sich ein professionell gestaltetes Formular, mit Logo, Headliner dem Firmennamen und Bilder des Produkts, diese Tabelle zieht sich alle Infos aus der Tabelle1 (Eingabe) und präsentiert Sie dann schön formatiert, daraus erzeuge ich dann meine PDF! In meinem Konkreten Fall ist es eine Nettopreisliste.
Großes fettes Dankeschön an Torsten! Dein Code hat den AHA-Moment mit sich gebracht.
PS: Evtl. kann man die Code-Zeile aus dem der Dateiname erzeugt wird noch etwas minimalistischer gestalten, ich fand allerdings nicht heraus wie.
|