Excelでは、誤操作やデータ改ざんを防ぐためにシートを保護することがよくあります。
特に複数のシートで構成された帳票や業務ファイルでは、「全シートをまとめて保護したい」「編集時だけ一時的に解除したい」といったニーズが出てきます。
手動で1シートずつ操作するのは手間がかかるため、VBAで一括処理できるようにしておくと非常に便利です。
すべてのシートを一括で保護・解除するマクロ
次のコードでは、すべてのワークシートに対して「保護するマクロ」と「解除するマクロ」の2つを用意しています。パスワードも設定可能です。
保護するマクロ
Sub ProtectAllSheets()
Dim ws As Worksheet
Dim pw As String
pw = "pass123" ' 任意のパスワード
For Each ws In Worksheets
ws.Protect Password:=pw, UserInterfaceOnly:=True
Next ws
MsgBox "すべてのシートを保護しました", vbInformation
End Sub
解除するマクロ
Sub UnprotectAllSheets()
Dim ws As Worksheet
Dim pw As String
pw = "pass123" ' 上記と同じパスワードを設定
For Each ws In Worksheets
ws.Unprotect Password:=pw
Next ws
MsgBox "すべてのシートの保護を解除しました", vbInformation
End Sub
コードのポイント
UserInterfaceOnly:=Trueを指定することで、保護状態でもVBAによる操作は可能になります。- パスワードは必要に応じて変更可能です。
Worksheetsでブック内の全シートに対応できます。
実装するメリット
このようなマクロを取り入れることで、次のようなメリットが得られます。
- 業務ファイルの改ざんや誤操作を防止できる
- シートごとの保護設定を自動化でき、作業ミスも防げる
- マクロ実行で一括処理できるため、大量のシートにも対応可能
- 編集時だけ一時的に解除 → 完了後に再保護という運用がスムーズ
- ユーザーごとにパスワードを管理すればセキュリティ面も強化できる
業務でよく使われる帳票フォーマットや提出資料テンプレートにも応用可能です。
まとめ
シートの保護・解除は、安全性と作業効率を両立させるために欠かせない操作です。
- 全シートを一括で保護・解除できる
- パスワードを設定して誤操作を防止
- VBAで簡単に管理・運用できる仕組みが作れる
特にチームや部署で共有されるExcelファイルでは、保護のルールを統一し、自動化しておくことで大きなトラブル防止になります。
ぜひマクロとして取り入れて、業務に活かしてください。


