Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Tabelle als pdf abspeichern mit name aus Zelle

Tabelle als pdf abspeichern mit name aus Zelle
02.08.2024 09:44:51
Thanh
Hallo Zusammen

ich habe folgendes Problem, ich möchte via macro ein Formular abspeichern und in ein PDF umwandel, Die Dateiname nimmt es aus zwei Zellen. Soweit klappt es auch, nur wenn in der eine Zelle ein Sonderzeichen ist das von Windows nicht erlaubt ist als Dateiname dann kann er das Macro nicht ausführen.
Mein Code sieht so aus:
Sub PDF_Speichern_1()
Const DateiPfad = "C:\Rechnungen\"
Dim DateiName As String
DateiName = DateiPfad & Range("W10") & Range("AB18") & ".pdf" ' Kunde + Rechnungsnr
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
DateiName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False

End Sub

Ist es möglich dass so einzustellen dass wenn ein Sonderzeichen vorhanden ist, dies einfach weggelassen wird beim abspeichern der Datei?

Für eure Hilfe bedanke ich mich recht herzlich.
Anzeige

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Tabelle als pdf abspeichern mit name aus Zelle
02.08.2024 10:44:37
Thanh
Hallo Jochen

Sorry wenn ich da nachfrage, aber wie bau ich dass in meinem code ein, leider habe ich da zuwenig Erfahrung.
Wäre schön wenn du mir da weiterhelfen könntest.

LG

Thanh
AW: Tabelle als pdf abspeichern mit name aus Zelle
02.08.2024 12:42:45
JoWE
Hallo Nochmal,

so:


Option Explicit

Sub PDF_Speichern_1()
Const DateiPfad = "C:\Rechnungen\" '"C:\temp\"
Dim DateiName As String
DateiName = Range("W10") & Range("AB18") & ".pdf" ' Kunde + Rechnungsnr
DateiName = DateiPfad & CleanFilename(DateiName)
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
DateiName, Quality:=xlQualityStandard, IncludeDocProperties:=True, _
IgnorePrintAreas:=False, OpenAfterPublish:=False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False
End Sub

Public Function CleanFilename(ByVal sFilename As String, _
Optional ByVal sChar As String = "") As String
Dim oRegExp As RegExp
Set oRegExp = New RegExp
With oRegExp
.IgnoreCase = True
.Global = True
.MultiLine = True
.Pattern = "[\\/:?%*^"">|]"
CleanFilename = .Replace(sFilename, sChar)
End With
Set oRegExp = Nothing
End Function

Gruß
Jochen
Anzeige
AW: Tabelle als pdf abspeichern mit name aus Zelle
02.08.2024 10:40:57
UweD
Hallo

so?

Sub PDF_Speichern_1()

Const DateiPfad = "C:\Rechnungen\"
Dim DateiName As String, Tw10 As String, Tab18 As String
Tw10 = Sonderz(Range("TW10"))
Tab18 = Sonderz(Range("TAB18"))

DateiName = DateiPfad & Tw10 & Tab18 & ".pdf" ' Kunde + Rechnungsnr
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF, Filename:= _
DateiName, Quality:=xlQualityStandard, _
IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:= _
False
ActiveWindow.SelectedSheets.PrintOut Copies:=1, Collate:=True, _
IgnorePrintAreas:=False

End Sub

Function Sonderz(strText As String)
Dim strNa, i As Integer
strNa = Split("# & "" { } | / \ ~ % > : ? * ", " ") 'nicht erlaubte Zeichen, getrennt durch Leerzeichen

For i = LBound(strNa) To UBound(strNa)
strText = Replace(strText, strNa(i), "")
Next
Sonderz = strText
End Function


LG UweD
Anzeige
AW: Tabelle als pdf abspeichern mit name aus Zelle
02.08.2024 11:04:42
Thanh
Hallo UweD

Danke für den Code,

Nun kommt immer ein fehler : Laufzeitfehler '-2147024773 (8007007b)': Das Dokumment wurde nicht abgespeichert.

Was Nun?

LG

Thanh
AW: Tabelle als pdf abspeichern mit name aus Zelle
02.08.2024 11:41:29
Thanh
Hallo Zusammen

Ich wollte mich nochmals herzlich bedanken, habe nun herausgefunden wo der fehler lag und jetzt klappt es auch, ich musse nur die Zellennamen korrigieren :-)

Vielen Dank für die schnelle hilfe.

LG und einen sonnigen Tag

Thanh
Anzeige
AW: Tabelle als pdf abspeichern mit name aus Zelle
02.08.2024 13:20:51
UweD
Hi

Habs gerade auch erst gemerkt.

muss ja so heißen:



Tw10 = Sonderz(Range("W10"))
Tab18 = Sonderz(Range("AB18"))


LG UweD
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige