Excelの選択範囲を爆速PDF化!ファイル名・日付・格納先自動生成マクロで業務効率UP

Excel

概要

日々の業務でExcelを使った資料作成は欠かせません。

特に、作成したExcelの一部をPDFとして共有する場面は頻繁にあるのではないでしょうか。

手動で範囲を選択し、名前を付けて保存する作業は、数が多くなると意外と手間がかかるものです。

この記事では、Excelの特定範囲をワンクリックでPDF化し、さらにファイル名に自動で日付を付加するVBAマクロをご紹介します。

このマクロを活用すれば、あなたの資料作成・共有プロセスが格段に効率アップすること間違いなしです。マクロのカスタマイズ方法も解説しますので、ぜひ最後までご覧ください。

このマクロで解決できること

4つの大変なことをマクロ機能で解決しましょう!

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

マクロの使い方とカスタマイズのポイント

  1. VBAエディタを開く: Alt + F11 を押して、Visual Basic for Applications (VBA) エディタを開きます。
  2. 標準モジュールの挿入: 左側のプロジェクトエクスプローラーで、対象のExcelファイル名を右クリックし、「挿入」>「標準モジュール」を選択します。
  3. コードの貼り付け: 上記のマクロコードを新しく開いたモジュールウィンドウにコピー&ペーストします。
  4. 【重要】baseFileNamesaveFolderPath の設定:
    • baseFileName = "日次報告書_": ここにPDFファイル名の固定部分を設定します。例えば「請求書_」とすれば「請求書_20250710.pdf」のように出力されます。
    • saveFolderPath = ThisWorkbook.Path & Application.PathSeparator: これは、マクロを実行するExcelファイルと同じフォルダにPDFを保存する場合の記述です。特定のフォルダに保存したい場合は、saveFolderPath = "C:\Users\あなたのユーザー名\Documents\PDF出力\" のように、絶対パスで指定してください。パスの最後にバックスラッシュ(\)を付けるのを忘れないでください。
  5. マクロの実行:
    • PDF化したいExcelの範囲を選択します。
    • Alt + F8 を押して「マクロ」ダイアログを開き、「ExportSelectedRangeToPDF」を選択して「実行」をクリックします。
    • または、クイックアクセスツールバーにマクロを登録したり、図形にマクロを割り当てたりすると、より便利に実行できます。
指定する標準モジュールに貼り付け

実行し、成功すると画像のような画面になります!

格納先を指定するとこのようにPDFファイルが作成されます

カスタマイズのヒント

  • 日付形式の変更: 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業務効率化の一助となれば幸いです。

この記事を書いた人
でんちゃん

一児の父。人事として6年、採用・教育・労務・人事制度などを経験してきました。Excelを用いたデータ分析が得意。
娘が生まれ日々のすさまじい成長を目の当たりにしています。
人事やExcel、子育てに関してのお役立ち情報を伝えるブログを作っていきます!

でんちゃんをフォローする
Excel
でんちゃんをフォローする

コメント

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