
手動で範囲を選択し、名前を付けて保存する作業は、数が多くなると意外と手間がかかるよね。
この記事では、Excelの特定範囲をワンクリックでPDF化し、さらにファイル名に自動で日付を付加するVBAマクロをご紹介します。
このマクロで解決できること

Excel選択範囲をPDF化するVBAマクロ

ご紹介するマクロは、Excelシート上で選択した範囲をPDFファイルとして保存します。
ファイル名には、指定した固定の文字列と実行日の日付(YYYYMMDD形式)が自動で付加され、保存先も任意に設定可能です。
VBA
Sub ExportSelectedRangeToPDF()
Dim ws As Worksheet
Dim selectedRange As Range
Dim baseFileName As String ‘ PDFファイルの基本名
Dim todayDate As String ‘ 今日の日付 (YYYYMMDD形式)
Dim pdfFullPath As String ‘ PDFファイルのフルパス
Dim saveFolderPath As String ‘ PDFを保存するフォルダパス
‘ — 【ここを設定してください!】 —
‘ 1. PDFファイルの基本名を設定します。
‘ 例: “日次報告書_” と設定すると “日次報告書_20250710.pdf” のように保存されます。
baseFileName = “日次報告書_”
‘ 2. PDFの保存先フォルダパスを設定します。
‘ – ThisWorkbook.Path & Application.PathSeparator: マクロが保存されているExcelファイルと同じフォルダ
‘ – “C:\Users\YourName\Documents\PDF_Output\”: 指定のフォルダに保存する場合 (末尾に”\”を忘れずに!)
saveFolderPath = ThisWorkbook.Path & Application.PathSeparator
‘ saveFolderPath = “C:\Users\YourName\Documents\PDF_Output\” ‘ 特定のフォルダに保存する場合の例
‘ — 設定ここまで —
‘ 現在アクティブなシートと選択範囲を取得
Set ws = ActiveSheet
Set selectedRange = Selection
‘ 今日の日付をYYYYMMDD形式で取得
todayDate = Format(Date, “yyyymmdd”) ‘ 例: 20250710
‘ PDFのフルパスを生成
pdfFullPath = saveFolderPath & baseFileName & todayDate & “.pdf”
‘ エラーが発生した場合の処理を設定
On Error GoTo ErrorHandler
‘ 保存先フォルダが存在しない場合は作成
If Dir(saveFolderPath, vbDirectory) = “” Then
MkDir saveFolderPath
End If
‘ 選択範囲をPDFとしてエクスポート
selectedRange.ExportAsFixedFormat _
Type:=xlTypePDF, _
FileName:=pdfFullPath, _
Quality:=xlQualityStandard, _
IncludeDocProperties:=True, _
IgnorePrintAreas:=False, _
OpenAfterPublish:=True ‘ 保存後にPDFを開く
MsgBox “選択範囲がPDFとして保存されました!” & vbCrLf & pdfFullPath, vbInformation
‘ 正常終了
Exit Sub
ErrorHandler:
‘ エラーメッセージを表示
MsgBox “PDFの保存中にエラーが発生しました。” & vbCrLf & _
“エラー内容: ” & Err.Description & vbCrLf & _
“パス: ” & pdfFullPath, vbCritical
End Sub
マクロの使い方とカスタマイズのポイント
- VBAエディタを開く:
Alt
+F11
を押して、Visual Basic for Applications (VBA) エディタを開きます。 - 標準モジュールの挿入: 左側のプロジェクトエクスプローラーで、対象のExcelファイル名を右クリックし、「挿入」>「標準モジュール」を選択します。
- コードの貼り付け: 上記のマクロコードを新しく開いたモジュールウィンドウにコピー&ペーストします。
- 【重要】baseFileName と saveFolderPath の設定:
- baseFileName = “日次報告書_”: ここにPDFファイル名の固定部分を設定します。例えば「
請求書_
」とすれば「請求書_20250710.pdf
」のように出力されます。 - saveFolderPath = ThisWorkbook.Path & Application.PathSeparator: これは、マクロを実行するExcelファイルと同じフォルダにPDFを保存する場合の記述です。特定のフォルダに保存したい場合は、saveFolderPath = “C:\Users\あなたのユーザー名\Documents\PDF出力\” のように、絶対パスで指定してください。パスの最後にバックスラッシュ(
\
)を付けるのを忘れないでください。
- baseFileName = “日次報告書_”: ここにPDFファイル名の固定部分を設定します。例えば「
- マクロの実行:
- PDF化したいExcelの範囲を選択します。
Alt
+F8
を押して「マクロ」ダイアログを開き、「ExportSelectedRangeToPDF」を選択して「実行」をクリックします。- または、クイックアクセスツールバーにマクロを登録したり、図形にマクロを割り当てたりすると、より便利に実行できます。



カスタマイズのヒント
- 日付形式の変更: Format(Date, “yyyymmdd”
)
の “yyyymmdd” 部分を変更することで、日付の表示形式を変えられます。例えば、”yyyy-mm-dd” とすれば 2025-07-10 になります。 - ファイル名に時刻を追加: Format(Now, “hhmmss”) を追加すれば、ファイル名に時刻も付加できます。
- 特定のシートの範囲を固定: Set selectedRange = ActiveSheet.Range(“A1:G20”) のように記述すれば、常に特定のシートの固定範囲をPDF化できます。
- 印刷設定の調整: ExportAsFixedFormat メソッドには、From, To (印刷ページ範囲), IgnorePrintAreas (印刷範囲設定を無視するか) など、他にも多くの引数があります。必要に応じて調整することで、より詳細な出力設定が可能です。
まとめ
今回ご紹介したVBAマクロを使えば、Excelの選択範囲をPDF化する作業が劇的に効率化されます。
固定のファイル名と自動生成される日付のおかげで、ファイル管理も楽になるでしょう。
ぜひこのマクロをあなたの業務に取り入れて、日々の作業負担を軽減してください。

VBAは少し敷居が高いと感じるかもしれませんが、一度書いてしまえば何度でも繰り返し使え、その効果は絶大です。この記事が、あなたのExcel業務効率化の一助となれば幸いです。
VBAお勧め本9選

これからVBAの勉強をしていきたい方やVBAを業務で使ってレベルを上げていきたい方などレベル別にお勧めの本を9つご紹介しています!
気になる方は下記の記事をご覧ください!
コメント