Excelでシートを毎回「シート保護」を設定/解除するのはとても手間ですよね。
特に、社内共有用ファイルや入力制御を行いたいブックでは、シートを保護したい場面が多くあります。そして編集の際はシートの保護解除を行いますが、毎回保護⇔解除するとなると、かなり面倒ですよね・・・
この記事では、ExcelVBAでシートをワンクリックで保護/解除するマクロをご紹介します。パスワードも設定できるので、セキュリティ面も安心です。
動作イメージはこちら
◆こんな方におすすめ
- エクセルシートを「一時的に解除→作業後に保護」したい
- 入力できるセル以外をロックして誤入力を防ぎたい
- 保護⇔解除をワンクリックで実施したい
シートの確認
今回はこのようなシートを使います。A列に名前が入力されていて、B列に部署が入力されています。

このシートに、まずはシートの保護(入力等ができない)を設定します。
シート保護のVBAコード
Sub ProtectSheet()
Dim pwd As String
' パスワードを設定(必要に応じて変更してください)
pwd = "password"
ActiveSheet.Protect Password:=pwd
MsgBox "シートを保護しました!", vbInformation
End Sub
シート保護の実行
さきほど入力したVBAコードを実行すると、シートが保護されます。

編集しようとすると、エラーメッセージが表示され編集できません。

では、今度はシートの保護を解除していきます。
シートの保護解除するVBAコード
Sub UnprotectSheet()
Dim pwd As String
' パスワードを設定(必要に応じて変更してください)
pwd = "password"
ActiveSheet.Unprotect Password:=pwd
MsgBox "シートの保護を解除しました!", vbInformation
End Sub
シートの保護解除を実行
さきほど入力したVBAコードを実行すると、シートの保護が解除され、編集することが可能になります。

コメント