
ファイル保存時に自動で印刷したい
シートを保護したままでも印刷させたい
毎回操作する手間を減らしたい!
結論:「Workbook_BeforeSave」イベント+Protect/Unprotectで自動化可能
Excelには保存時のタイミングを捉えるイベントがあります。
これとProtect
(保護)やUnprotect
(保護解除)を組み合わせれば、
「保存ボタンを押したら、自動的に保護を解除 → 印刷 → 再度保護」
といったフローも、完全自動で実現できます。
目次
実現する機能の概要と活用例
📄 機能概要
- 保存時に自動的に印刷(PDFや紙)
- シートが保護されていても印刷可能
- 印刷前後で保護を自動的に管理
💼 活用例
- 月末報告書や納品書など、印刷が必須の帳票
- 社内共有フォーマットで誤入力を防止したい場合
保存時に自動印刷を行うVBAコード
このコードは「ThisWorkbook」モジュールに記述します。
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) Dim ws As Worksheet Set ws = ThisWorkbook.Sheets("報告書") ' 対象シート名に変更してください ' 保護を解除(必要に応じてパスワード対応) ws.Unprotect Password:="abc123" ' 印刷(プリンタ or PDFは印刷設定による) ws.PrintOut ' 再び保護 ws.Protect Password:="abc123" End Sub
シート保護されている場合の注意点
シートが保護されていると、印刷設定によってはエラーになる場合があります。
そのため、印刷前に必ず Unprotect
で解除しましょう。
🔒 誤操作を防ぐため、印刷後には再び
Protect
するのを忘れずに!
パスワード付きの保護と解除を組み込む
保護の強度を高めるため、パスワードを使いましょう。
前述コードでは、"abc123"
を仮のパスワードにしています。
ws.Unprotect Password:="abc123" ws.Protect Password:="abc123"



💡パスワードはコードに直接書かれるため、共有時には注意が必要です。
応用:特定のシートだけ印刷する条件分岐
If ws.Name = "納品書" Then ws.PrintOut End If



このようにすれば、特定の条件に応じて印刷対象を制御することも可能です。
よくあるトラブルと対策
トラブル内容 | 対策方法 |
---|---|
印刷されない | プリンタ設定 or PrintOut対象シートが正しいか確認 |
印刷後に編集できてしまう | Protectの再設定漏れを確認 |
イベントが動作しない | ThisWorkbook モジュールか確認 / マクロ有効ブック形式で保存すること(.xlsm) |
まとめ:操作不要で印刷漏れゼロに!
保存と同時に自動で印刷 → 保護も自動で制御
この一連の流れがあるだけで、現場での「うっかりミス」や「印刷漏れ」を大きく減らせます。
処理 | VBAコードの主な内容 |
---|---|
保存時イベント | Workbook_BeforeSave |
シート保護解除 | .Unprotect Password:=~ |
自動印刷 | .PrintOut |
再保護 | .Protect Password:=~ |
コメント