【ExcelVBA・マクロ】エクセルをPDFに変換して保存するVBAコード【請求書をPDFで自動保存】

ExcelVBA

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保存していた作業を自動化することができます。ワンクリックで終了するため業務の効率化することができますので、ぜひ使ってみてください!

コメント

タイトルとURLをコピーしました