У меня есть следующий фрагмент кода для сохранения PDF-файла из существующего файла excel.Определить имя файла с помощью макроса
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
Поскольку код должен выполняться рекурсивно, я хотел бы добавить к имени файла номер недели, содержащийся в данной ячейке (B2) в листе.
Я попытался заменить
s(0) = ThisWorkbook.FullName & Cells(2,2)
, но он не работает. Где ошибка?
Недостатком будет, если оригинал книги уже включены в номер недели, как часть имени файла, в в этом случае он будет добавлять новый номер недели к номеру старой недели. (Я не уверен, как обойти это без дополнительной информации из структуры повторного выбора номера недели.) – YowE3K
Исходное имя файла не содержит номер недели. допустим, что это report.xlsm, я хочу сохранить report40.pdf за неделю 40. –
@ L.Dutch - в этом случае предложение Дэвида должно работать без каких-либо проблем - оно заменяет '.xlsm' чем-то вроде' wk42.pdf '(предполагая, что B2 содержит' wk42'). – YowE3K