Sub SaveAsPDF_WithFieldnameAndDialog() Dim fd As FileDialog Dim doc As Document Dim fileName As String Dim folderPath As String Set doc = ActiveDocument ' --- KONFIGURATION: Name aus Feld auslesen --- ' Möglichkeit A: Textmarke namens "Auftragnummer" On Error Resume Next fileName = doc.Bookmarks("Auftragsnummer").Range.Text & "- " & doc.Bookmarks("RGNummer").Range.Text & " - " & doc.Bookmarks("Kunde").Range.Text & "- " & "Gelangensbestätigung_Vorlage" ' Möglichkeit B: Alternativ Formularfeld (Legacy) ' fileName = doc.FormFields("Auftragsnummer").Result ' Wenn Feld leer ist, Standardname setzen If Trim(fileName) = "" Then fileName = "Auftragsnummer - Rechnungsnummer - Kunde - Gelangensbestätigung_Vorlage" ' Ungültige Zeichen für Dateinamen entfernen (Optional, aber empfohlen) fileName = CleanFileName(fileName) On Error GoTo 0 ' --- DIALOG: Ordnerwahl öffnen --- Set fd = Application.FileDialog(msoFileDialogSaveAs) With fd .Title = "PDF speichern unter" .InitialFileName = fileName & ".pdf" ' Vorschlag für Dateiname .FilterIndex = 1 ' Standardfilter ' Wenn der Benutzer auf "Speichern" klickt If .Show = -1 Then folderPath = .SelectedItems(1) ' --- EXPORT: Als PDF --- doc.ExportAsFixedFormat _ OutputFileName:=folderPath, _ ExportFormat:=wdExportFormatPDF, _ OpenAfterExport:=True, _ OptimizeFor:=wdExportOptimizeForPrint, _ Range:=wdExportAllDocument MsgBox "PDF erfolgreich gespeichert!", vbInformation Else MsgBox "Speichervorgang abgebrochen.", vbExclamation End If End With Set fd = Nothing End Sub ' Hilfsfunktion, um ungültige Zeichen aus dem Feldnamen zu entfernen Function CleanFileName(strIn As String) As String Dim objRegEx As Object Set objRegEx = CreateObject("VBScript.RegExp") objRegEx.Global = True objRegEx.Pattern = "[\\\/\:\*\?\""\<\>\|]" CleanFileName = objRegEx.Replace(strIn, "_") End Function