ワークブックを保護する方法です。ブックを保護すると、シートの挿入・削除、ウィンドウサイズの変更ができなくなります。

保護には.Protectメソッド、解除にはUnprotectメソッドを使います。


ブックを保護するマクロ

■構文:ブックオブジェクト.Protect(Password, Structure, Windows)

引数の説明 (引数とは、関数に渡すパラメータ[括弧内の変数]です)
■構文:ブックオブジェクト.Unprotect(Password)

引数の説明 (引数とは、関数に渡すパラメータ[括弧内の変数]です)
VBA入力画面
VBAプログラム入力画面

入力したコードです。

Sub ブックを保護()
    Dim sfina As String
    
On Error GoTo エラー処理
    sfina = ThisWorkbook.Name
    Workbooks(sfina).Activate
    ActiveWorkbook.Protect Structure:=True, Windows:=True
    Exit Sub

エラー処理:
    MsgBox "ブックの保護実行中にエラーが発生しました。" + vbCrLf + Err.Description
End Sub

Sub ブックの保護を解除()
    Dim sfina As String
    
On Error GoTo エラー処理
    sfina = ThisWorkbook.Name
    Workbooks(sfina).Activate
    ActiveWorkbook.Unprotect
    Exit Sub

エラー処理:
    MsgBox "ブックの保護解除中にエラーが発生しました。" + vbCrLf + Err.Description
End Sub

プログラムの説明


Subプロシージャの宣言
Sub ブックを保護()
文字型の変数を宣言
Dim sfina As String
エラーが発生した場合は、エラー処理ラベルに移動
On Error GoTo エラー処理
現在使用しているワークブックのファイル名を取得
sfina = ThisWorkbook.Name
ブックをアクティブにします(sfinaを変更すると別のブック名を保護できます)
Workbooks(sfina).Activate
ブックを保護します
ActiveWorkbook.Protect Structure:=True, Windows:=True
プロシージャの終了
Exit Sub
エラー ラベル
エラー処理:
エラーメッセージとエラー内容を表示します
MsgBox "ブックの保護実行中にエラーが発生しました。" + vbCrLf + Err.Description
プロシージャの終了
End Sub

Subプロシージャの宣言
Sub ブックの保護を解除()
文字型の変数を宣言
Dim sfina As String
エラーが発生した場合は、エラー処理ラベルに移動
On Error GoTo エラー処理
現在使用しているワークブックのファイル名を取得
sfina = ThisWorkbook.Name
ブックをアクティブにします
Workbooks(sfina).Activate
ブックの保護を解除します
ActiveWorkbook.Unprotect
プロシージャの終了
Exit Sub
エラー ラベル
エラー処理:
エラーメッセージとエラー内容を表示します
MsgBox "ブックの保護解除中にエラーが発生しました。" + vbCrLf + Err.Description
プロシージャの終了
End Sub

ブックを保護するマクロの実行画面

保護実行前の画面です。
ウィンドウの最小ボタン、元に戻すボタンが表示されています。
シート名を右クリックすると表示されるメニューは「挿入」「削除」が使用可能な状態です。
ブックを保護する前のウィンドウ

「ブックを保護」マクロを実行します。
保護後、解除するには「ブックの保護を解除」マクロを実行します。
ブック保護マクロの実行

保護実行後の画面です。
ウィンドウの最小ボタン、元に戻すボタンが消えています。
シート名を右クリックすると表示されるメニューの「挿入」「削除」が使用不可な状態になっています。
ブックを保護した後のウィンドウ

Excelマクロのサンプルファイル:フリーダウンロード








Copyright (C) excel.usefulhp.com All rights reserved.