既存のExcelファイルからPDFファイルを保存するには、次のコードを使用します。マクロを使用してファイル名を定義する
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)
を交換しようとしたが、それは動作しません。エラーはどこですか?
オリジナルのワークブックはすでに、ファイル名の一部として週番号が含まれている場合の欠点は次のようになります古い週番号に新しい週番号が追加されます。 (私は週番号の値のOP再構造からの情報なしでそれを回避する方法がわかりません)。 – YowE3K
元のファイル名には週番号が含まれていません。それはreport.xlsmだとしましょう。私は40週目にreport40.pdfを保存したいと思っています。 –
@ L.Dutch - この場合、David氏の提案は問題なく動作するはずです。 '.xlsm'を' wk42.pdf '(B2には' wk42'が含まれていると仮定します)。 – YowE3K