Ich habe den folgenden Code zum Speichern einer PDF-Datei aus einer vorhandenen Excel-Datei.Definieren Sie den Dateinamen über Makro
Dim FSO As Object
Dim s(1) As String
Dim sNewFilePath As String
Set FSO = CreateObject("Scripting.FileSystemObject")
s(0) = ThisWorkbook.FullName
If FSO.FileExists(s(0)) Then
'//Change Excel Extension to PDF extension in FilePath
s(1) = FSO.GetExtensionName(s(0))
If s(1) <> "" Then
s(1) = "." & s(1)
sNewFilePath = Replace(s(0), s(1), ".pdf")
'//Export to PDF with new File Path
ActiveSheet.ExportAsFixedFormat Type:=xlTypePDF,_
_ Filename:=sNewFilePath, Quality:=xlQualityStandard,_
_ IncludeDocProperties:=True, IgnorePrintAreas:=False, OpenAfterPublish:=False
End If
Else
'//Error: file path not found
MsgBox "Error: this workbook may be unsaved. Please save and try again."
End If
Set FSO = Nothing
Da der Code rekursiv ausgeführt werden muss, würde ich würde an den Dateinamen die Wochennummer, enthalten in einer bestimmten Zelle (B2) in dem Blatt gerne hinzufügen.
versuchte ich
s(0) = ThisWorkbook.FullName & Cells(2,2)
ersetzen, aber es funktioniert nicht. Wo ist der Fehler?
Der Nachteil sein wird, wenn die ursprüngliche Arbeitsmappe bereits eine Woche Nummer als Teil des Dateinamens enthalten, in In diesem Fall wird die neue Wochennummer an die alte Wochennummer angehängt. (Ich bin mir nicht sicher, wie ich das ohne weitere Informationen aus der OP-Struktur des Wochennummernwerts umgehen könnte.) – YowE3K
Der ursprüngliche Dateiname enthält nicht die Wochennummer. Sagen wir, es ist report.xlsm, ich möchte report40.pdf für die Woche 40 speichern. –
@ L.Dutch - in diesem Fall sollte Davids Vorschlag ohne Probleme funktionieren - er ersetzt '.xlsm' mit etwas wie' wk42.pdf '(unter der Annahme, dass B2" wk42 "enthielt). – YowE3K