シートを保護する方法

中級VBA

はじめに

 Excelには、ワークシートを保護する機能が付いています。
 ワークシートの保護では、セル値の変更、書式設定の変更、行・列の挿入や削除などの操作をできないように設定できます。
 また、パスワードを指定できる他、許可する設定を個別に指定できるなど多機能です。

 Execl上の操作では、「校閲」から「シートの保護」。またはシートタブを右クリックして「シートの保護」で行う事ができます。

 上記にある様々なオプションをVBAから設定(または解除)する事ができます。
 
 但し、Excelの場合、シートの保護といっても保護を解除出来てしまうので過信は禁物です。

Protectメソッドの使い方

 シート保護・保護解除のメソッドは以下のようになります。
 
 シートの保護
 Worksheet.Protect (Password, Option…)
 
 シートの保護解除
 Worksheet.UnProtect (Password) 

 パスワードをを含め、全てのオプションは省略可能です。

シート保護・解除(パスワード無し)

 パスワード無しでシートの保護・解除を行うには以下のようにします。

'パスワード無しでシート保護
Sub testProtect1()
    ActiveSheet.Protect
End Sub

'パスワード無しでシート保護解除
Sub testUnprotect1()
     ActiveSheet.Unprotect
End Sub

パスワード付きでシート保護・解除

'パスワード付きでシート保護
Sub testProtect2()
    ActiveSheet.Protect "pass"
End Sub

'パスワード付きでシート保護解除
Sub testUnprotect2()
     ActiveSheet.Unprotect "pass"
End Sub

パスワード無しの Unprotect を実行するとパスワード入力ダイアログが出てきてパスワード入力を求められます。

Protectメソッドのオプション

 以下の表では、オプションのデフォルト値デフォルト状態の時の動作を示しています。
 Password以外の引数は、TRUEFALSEを取ります。

引 数デフォルト値説明(デフォルトの時)
Passwordシート保護のパスワード指定
DrawingObjectsTRUEオブジェクトの編集を許可しない
ContentsTRUEシートとロックされたセルの内容を保護
ScenariosTRUEシナリオの編集を許可しない
UserInterfaceOnlyFALSEユーザ操作とマクロからシートを保護する
AllowFormattingCellsFALSE「セルの書式設定」を許可しない
AllowFormattingColumnsFALSE「列の書式設定」を許可しない
AllowFormattingRowsFALSE「行の書式設定」を許可しない
AllowInsertingColumnsFALSE「列の挿入」を許可しない
AllowInsertingRowsFALSE「行の挿入」を許可しない
AllowInsertingHyperlinksFALSE「ハイパーリンクの挿入」を許可しない
AllowDeletingColumnsFALSE「列の削除」を許可しない
AllowDeletingRowsFALSE「行の削除」を許可しない
AllowSortingFALSE「並べ替え」を許可しない
AllowFilteringFALSE「オートフィルタの使用」を許可しない
AllowUsingPivotTablesFALSE「ピボットテーブルとピボットグラフの使用」を許可しない

オプション指定のサンプルコード

 以下のプログラムでは、アクティブシートに保護をかけますが、行の挿入と削除は許可します。
 実際のプログラムでは、既にシート保護がされている場合を想定して、一旦シート保護解除してからシート保護をし直す事が多いようです。

Sub testProtect3()
    '既にシート保護されている事もあるので一旦解除しておく
    ActiveSheet.Unprotect

   'シートを保護するが、行の挿入と削除は許可
    ActiveSheet.Protect AllowInsertingRows:=True, _
                        AllowDeletingRows:=True
End Sub

まとめ

 シート保護は、編集されたくない場合に使用します。
 オプションはたくさんありますが、デフォルトのままで良い場合は特に指定しなくても大丈夫です。
 
 尚、あるセルを個別にロックさせたくない場合は、シート保護が解除されている状態で、セルのロックを解除し、その後シートの保護をかけるようにします。 初期状態ではセルはロック状態になっています。
 
 セルのロックのみでは、機能しませんので注意してください。

コメント

タイトルとURLをコピーしました