ブックの保護は、シート上からは 「校閲– ブックの保護」から行います。
エクセルVBAでは保護のためにはProtect、解除のためにはUnprotectを使用します。
こんにちは じゅんぱ店長 (@junpa33) です。
エクセルブックは保護することが出来ます。
また、エクセルブックの保護は単にプロテクトだけでなく、パスワード付きで保護することも出来ます。
ブックを保護することによって、ブック中のシートの削除や移動、シート名変更やシートの表示変更を禁止することが出来ます。
- ブックの知識
- ブックの操作
- ワークブックを開くOpenメソッドの書き方 Excelマクロ
- VBA ブック名の取得法4つの解決策を詳しく解説
- VBA 開く,保存,閉じる,作成,削除 ブックの存在確認後のコード記述
- ファイルの保存に年月日+時刻を付けて管理する
- VBA 保存先フォルダをダイアログ指定で変数化
- 新規ブック5つの保存法。AddとSaveAsの使い方がわかる
- セル値を使いブック名として保存。統一フォームに有用
- VBA シートをブックから切り出し名付け保存する
- ブック名に作成者名を付加。 プロパティ変更とファイル保存
- 不要フォルダを削除する2種類のコードの作成
- 要らないファイルを自動削除するコードの作成
- ワークブックを閉じる12のパターン使い分け VBA最速理解
- ピンポイントでファイルを完全に削除するマクロ(コピペ可)
コンテンツ
エクセルブックを保護するVBAコード

エクセルブックを保護するには「 Protectメソッド 」を、
保護を解除するには「 Unprotectメソッド 」を使用します。
ブックの保護と保護解除の基本文
ProtectとUnprotectの使い方は以下のようになります。
ワークブックオブジェクト.Protect
ワークブックオブジェクト.Unprotect
エクセルブックの「Book1.xlsm」を保護するコードです。これだけです。
Sub ブックの保護1()
Workbooks("Book1.xlsm").Protect
End Sub
保護の解除は、ProtectをUnprotectに置き換えるだけです。
Sub ブックの保護2()
Workbooks("Book1.xlsm").Unprotect
End Sub
パスワード付きのブックの保護と保護解除の基本文
パスワードを設定する場合は、引数として「Password:=パスワード」を付け加えます。
ワークブックオブジェクト.Protect Password:=パスワード
ワークブックオブジェクト.Unprotect Password:=パスワード
引数としてパスワードを設定します。パスワードは「ロック」と設定しました。
Sub ブックの保護3()
Workbooks("Book1.xlsm").Protect Password:="ロック"
End Sub
Sub ブックの保護4()
Workbooks("Book1.xlsm").Unprotect Password:="ロック"
End Sub
エクセルブックが保護されているかを確認するコード
ブックが保護されているとメッセージウインドが表示されます。
Sub ブックの保護5()
If ThisWorkbook.ProtectStructure = True Then
MsgBox "ブックは保護されています。"
End If
End Sub
ブックのパスワード付き保護と解除の実用マクロ

あらかじめパスワードを設定しておき、マクロの実行で保護・保護解除を行なえる実用VBAコードです。
保護したいエクセルブックの標準モジュールへコピペで使用できます。
Sub ブックの保護6()
'*************
Dim PassWD As Variant
PassWD = "ロック"
If ThisWorkbook.ProtectStructure = False Then
ThisWorkbook.Protect Password:=PassWD
End If
'*************
Dim Ans As Long
Dim Inp As Variant
If ThisWorkbook.ProtectStructure = True Then
Ans = MsgBox("ブックは保護されています。" & vbCrLf & _
"解除しますか?", vbYesNo + vbExclamation, "ブックの保護")
End If
If Ans = vbYes Then
Inp = Application.InputBox("パスワードを入力してください", _
Title:="PASSWORD", Type:=2)
If Inp <> PassWD Then
MsgBox "パスワードが違います。"
Exit Sub
End If
ThisWorkbook.Unprotect Password:=Inp
Else
Exit Sub
End If
End Sub
まとめ

ブックを保護することによって、シートが改変されることを保護することが出来ます。ただし、ブックそのものを削除したり、複製したりすることを防ぐことは出来ません。
また、シート内のセルについては、シートが保護されていないと、ブックの保護だけではセルの保護はされません。
シートの保護についてはこの記事を参考にしてください。

セルの保護についてはこの記事を参考にしてください。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

今回の記事はここまでです。 最後までご覧いただき有難うございました。
<記事内容についての告知>
VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。