Excelで作った見積書や請求書、毎回「名前を付けてPDF保存」していませんか?
実はこの作業、マクロを使えばワンクリックで自動化できます。
この記事では、初心者でもコピペで使えるVBAコードを使って、指定のシートをPDFに変換し、自動で保存する方法をご紹介します。
エクセルで作成した請求書データを自動でPDF保存するVBAコード
動作イメージ
シートの確認
今回はこのようなエクセルで作成した請求書を使用していきます。

このシートはエクセルのオンラインテンプレートで作成可能です。(左上のロゴだけ私のブログのアイコンに変更しております)
VBAコードの入力
「開発」タブから「Visual Basic」をクリックしてください。

エディターが表示されますので、下記のVBAコードを入力しましょう
Sub SheetPDF()
Dim ws As Worksheet
Dim savePath As String
Dim fileName As String
' 対象シートを指定
Set ws = ActiveSheet
' 保存先フォルダとファイル名を設定
savePath = ThisWorkbook.Path & "\"
fileName = "請求書_" & Format(Date, "yyyymmdd") & ".pdf"
' PDFとして保存
ws.ExportAsFixedFormat Type:=xlTypePDF, _
fileName:=savePath & fileName, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=False
MsgBox "PDFとして保存しました: " & savePath & fileName, vbInformation
End Sub
コードの詳細
Set ws = ActiveSheet
PDF保存したいシートを指定(変数に代入)しています。シート名で指定したい場合は「worksheets(“シート名”)」などと入力します。
savePath = ThisWorkbook.Path & "\"
fileName = "請求書_" & Format(Date, "yyyymmdd") & ".pdf"
- 1行目は保存場所を指定(変数に代入)しています。このコードでは今回使用しているエクセルファイル(請求書ファイル)と同じ場所に保存するように指定しています。
- 2行目はPDFのファイル名を指定(変数に代入)しています。このコードでは「請求書_今日の日付を数字8桁(例:20250806).pdf」と指定しています。
ws.ExportAsFixedFormat Type:=xlTypePDF
シートをPDF形式で保存するように指定しています。
fileName:=savePath & fileName
保存するファイルのフルパスを指定しています。さきほど代入した変数「savePath」と「fileName」を「&」で繋げて指定します。
※変数を使わずにファイルパスを指定することも可能ですが、コードが長くなって分かりずらいため、変数を使用することをおすすめします。
IgnorePrintAreas:=False
Excelで設定してある印刷範囲だけをPDF化するようにします。印刷範囲を無視してシート全体をPDF保存したい場合は「False」⇒「True」にしてください。
OpenAfterPublish:=False
保存後に自動でPDFファイルを開かないように指定しています。自動でPDFファイルを開きたい場合は「False」⇒「True」にしてください。
マクロ実行
マクロを実行するとPDFファイルが作成されます。

いかがでしたでしょうか。VBAを使えば、毎回手動でPDF保存していた作業を自動化することができます。ワンクリックで終了するため業務の効率化することができますので、ぜひ使ってみてください!
コメント