概要
日々の業務でExcelを使った資料作成は欠かせません。
特に、作成したExcelの一部をPDFとして共有する場面は頻繁にあるのではないでしょうか。
手動で範囲を選択し、名前を付けて保存する作業は、数が多くなると意外と手間がかかるものです。
この記事では、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出力\"
のように、絶対パスで指定してください。パスの最後にバックスラッシュ(\
)を付けるのを忘れないでください。
- マクロの実行:
- 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業務効率化の一助となれば幸いです。
コメント