Excelを保存する時に、必ずPDFファイルを保存したいことがありますよね。
そんなときのために、Excel保存時にPDFも同時に保存するマクロを作成しました。また、保存したPDFファイル名には、日付をつけることでいつのファイルなのか分かるようにしてあります!
作成までの手順は以下になります。
- Excel保存時にPDFも保存するマクロを作る
- Excelで保存したときにイベントを発動し、上のマクロを呼び出す
Excel保存時にPDFも保存するマクロ
1. VBAのソースコードを書く
マクロのソースコードは以下になります。処理内容はソースのコメントに書いてあります。

copy
' 開いているExcelファイルを、PDFファイルとして保存する
Public Sub SavePDF()
Dim fileName, saveFileName As Variant
' 開いているExcelファイルを"."で分割する
fileName = Split(ThisWorkbook.Name, ".")
' 保存場所 :マクロの保存場所と同じ
' ファイル名:マクロのファイル名 + 年月日時分秒
saveFileName = ThisWorkbook.Path & "\" & fileName(0) & "_" & Format(Now, "yyyymmddhhmmss") & ".pdf"
' シートが空の場合PDF保存ができないため、空かどうかチェックする
If Application.WorksheetFunction.CountA(ActiveSheet.UsedRange) = 0 Then
MsgBox "シートが空のためPDF保存できません"
Exit Sub
End If
' アクティブなシートをPDFで保存する
ActiveWorkbook.ExportAsFixedFormat _
Type:=xlTypePDF, _
fileName:=saveFileName, _
OpenAfterPublish:=True
End Sub
2. 保存したときのイベントにマクロを登録する
次に、Excelを保存するときに、上記で作ったマクロが実行されるようにします。
プロジェクトの中にある、【ThisWorkbook】をダブルクリックしましょう。
次に、(General)と書いてあるプルダウンをクリックして、【Workbook】を選択しましょう。
【Workbook】を選択すると、以下のようにWorkbook_Openが勝手に書かれますが、とりあえず無視してください。
右側のプルダウンをクリックして、【AfterSave】を選択しましょう。
すると、Workbook_AfterSaveが自動的に書かれます。
このなかに処理を書くと、保存したあとに処理が自動的に実行されるようになります。
また、今回はWorkbook_Open()は不要なので消しておきます(以下の図では消去済み)。
Workbook_AfterSaveの中で、上記で作成した”SavePDF”を呼び出しましょう。
【Call メソッド名】で処理を呼び出すことが出来ます。
3. 準備
シートに適当に文字を書きましょう。
ソースのコメントにも書いていますが、ExportAsFixedFormatメソッドは、シートが空だとエラーになってしまいます。
4. マクロを実行する
キーボードの【F5】を押す、または画面上部の【▶】を押して、マクロを実行します。
PDFはマクロが保存されている場所に作成されて、自動的にPDFが開かれます。
これで完了です!
1回数分の作業でも、何十回、何百回と繰り返すと、とんでもない時間になりますからね…。少しでも生産性の向上に役立てば幸いです!
↓ おすすめの書籍です!