Contents
毎月のPDF出力、手作業だとつらくないですか?
月末になると、何枚ものシートを 1つずつPDFに保存する作業 に追われていませんか?
- 毎月の帳票をPDF化するのがとにかく面倒
- 「名前を付けて保存」を何度も繰り返す
- 保存先を間違えて、探すのに時間がかかる
こうした“よくある悩み”は、ExcelのVBAを使えば たった1クリック で解消できます。
「保存先フォルダを選ぶだけ」で、複数のシートを自動でPDF化する仕組みを作ってみましょう。
手作業でPDF化するときの問題点
1シートずつ「名前を付けて保存」を繰り返す負担
PDF化は地味ですが、意外と時間を使います。
保存先指定ミス・ファイル名のばらつき
担当者ごとに保存名がバラバラになり、後で探すのが大変になることも…。
忙しい月末に時間を奪われる
本来すべき“判断業務”ではなく、“作業”に時間が奪われてしまいます。
VBAで一括PDF化するとこうなる
- 保存先フォルダを選ぶだけでPDFが自動保存
- 複数シートを 順番にまとめて一括出力
- ファイル名も自動で統一でき、ミスが激減
月末のストレスが一気に減り、本来の業務に集中できます。
事前準備:VBAを動かす前に必要なもの
- マクロ有効ブック(.xlsm)で保存する
- PDF保存用のフォルダを作成しておく
- 各シートの印刷範囲・ページ設定を確認しておく
- 印刷設定が崩れていると、余白だらけのPDFが出ます。
【コピペOK】複数シートをPDF一括出力する基本VBA
コードの概要(初心者向け解説)
- 実行すると「保存先を選ぶダイアログ」が開く
- アクティブブック内の すべてのシート を1枚ずつPDF化
- PDF名は「シート名.pdf」
- 保存先のフォルダが1つ決まれば、あとは自動で実行されます
コピペ用コード(基本版)
Sub ExportSheetsToPDF()
Dim ws As Worksheet
Dim folderPath As String
'保存先フォルダを選択
With Application.FileDialog(msoFileDialogFolderPicker)
.Title = "PDFの保存先フォルダを選んでください"
If .Show = -1 Then
folderPath = .SelectedItems(1) & "\"
Else
MsgBox "処理をキャンセルしました。"
Exit Sub
End If
End With
'各シートをPDF保存
For Each ws In ThisWorkbook.Worksheets
ws.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=folderPath & ws.Name & ".pdf", _
Quality:=xlQualityStandard
Next ws
MsgBox "PDF出力が完了しました!"
End Sub
応用版:さらに便利にするPDF出力VBA
① 特定シートだけPDF化する
「請求書だけ」「レポートだけ」など、必要なシートだけ出力したい場合。
Sub ExportSelectedSheets()
Dim targetSheets As Variant
Dim s As Variant
Dim folderPath As String
'出力したいシート名を配列で指定
targetSheets = Array("請求書", "売上サマリー")
'保存先の選択
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
folderPath = .SelectedItems(1) & "\"
Else
Exit Sub
End If
End With
'指定シートを順番にPDF化
For Each s In targetSheets
Worksheets(s).ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=folderPath & s & ".pdf"
Next s
MsgBox "指定シートのPDF出力が完了しました!"
End Sub
② ファイル名に「日付」や「シート名」を自動で付与する
毎月の帳票に便利な「日付入りPDF」。
Sub ExportSheetsWithDate()
Dim ws As Worksheet
Dim folderPath As String
Dim fileName As String
Dim todayStr As String
todayStr = Format(Date, "yyyy-mm-dd") '日付を文字列化
With Application.FileDialog(msoFileDialogFolderPicker)
If .Show = -1 Then
folderPath = .SelectedItems(1) & "\"
Else
Exit Sub
End If
End With
For Each ws In ThisWorkbook.Worksheets
fileName = todayStr & "_" & ws.Name & ".pdf"
ws.ExportAsFixedFormat _
Type:=xlTypePDF, _
Filename:=folderPath & fileName
Next ws
MsgBox "日付入りPDFの出力が完了しました!"
End Sub
よくあるつまづきポイントと対処法
● パス指定エラー
- 保存先フォルダが存在しない
- ネットワークフォルダの接続が切れている
→ フォルダを再作成 or ネットワーク再接続を確認してください。
● 印刷範囲が設定されておらず、真っ白PDFになる
- 印刷範囲設定(PageSetup)が空の場合に起きる現象
→ 手動で印刷プレビューを確認して、印刷範囲を再設定してください。
● シート名に使えない文字があり、PDF保存に失敗する
Windowsでは \ / : * ? " < > | はファイル名に使えません。
→ シート名を変更する or Replace関数で除去するコード処理が必要です。
まとめ:毎月のPDF作業はVBAで“ワンクリック化”できます
- 面倒だったPDF化が一気に自動化
- 保存先を選ぶだけで、複数シートが自動でPDF出力
- 他の帳票でも同じ仕組みをそのまま使い回せる
作業時間を毎月10〜20分でも削減できれば、1年で大きな差になります。
もし「自社フォーマットに合わせた自動PDF化をしたい」「もっと複雑な帳票にも対応したい」などあれば、やさしくカスタマイズをお手伝いしますので、お気軽にご相談ください。
月10h削減!定型作業を1クリック化します 単調作業はVBA任せ!秒速で時短