VBAを使用すると、一瞬でPDF化することが出来ます。
下記にコードを記載します。
Sub PDF化()
Dim fileName As String
Dim name As Variant
name = Left(ActiveWorkbook.name, Len(ActiveWorkbook.name) - 5)
fileName = ThisWorkbook.Path & "\pdf\" & name & ".pdf"
Worksheets("見積書").ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName
End Sub
詳細を説明していきます。
Dim fileName As String
Dim name As Variant
まずは、PDFを格納先パスを含むファイル名(fileName)とファイルの名前のみ(name)を格納する変数を作ります。
name = Left(ActiveWorkbook.name, Len(ActiveWorkbook.name) - 5)
次に、Left関数で先頭から指定した文字数のところまでの文字列を取得します。
第一引数で対象ファイルのファイル名を取得し、第二引数で何文字まで取得するのか指定しています。
Len(ActiveWorkbook.name) - 5
第二引数の上記で、ファイル名末尾の「.xlsm」を除いています。
fileName = ThisWorkbook.Path & "\pdf" & name & ".pdf"
「ThisWorkbook.Path」で、対象のエクセルファイルの格納先パスを取得しています。
「"\pdf"」でPDFを格納する場所を指定しています。
こちらを変更することで、好きな場所に格納することができます。
&を使い、格納先ファイルパスとファイル名を連結し、最後に.pdfとします。
Worksheets("見積書").ExportAsFixedFormat Type:=xlTypePDF, fileName:=fileName
PDFで出力するためには、ExportAsFixedFormatメソッドを使用します。
TypeはxlTypePDF、fileNameには、格納パスを含めたfileNameとします。
以上、VBAでPDF化する方法です。