第68回.シートの保護、ブックの保護(Protect)
せっかく作ったExcelシートを間違って壊してしまったり、Excel操作に慣れない人が壊してしまったら困ります。
無用な改変、意図しない変更からシートを保護するには、ワークシートを保護します。
シートの保護に対応するには、ブックの保護が必要です。
シートの保護
引数 | 説明 | 既定値 |
Password | パスワードでは大文字と小文字が区別されます。 この引数を省略すると、ワークシートまたはブックはパスワードの使用なしで保護解除できます。 この引数を指定すると、保護解除をするためには、そのパスワードが必要になります。 パスワードを忘れると、シートまたはブックの保護を解除できなくなってしまうので注意してください。 |
|
DrawingObjects | 描画オブジェクトを保護するには、True を指定します。 | TRUE |
Contents | オブジェクトの内容を保護するには、True を指定します。 この引数による保護対象は、グラフの場合はグラフ全体、ワークシートの場合はロックされているセルです。 |
TRUE |
Scenarios | シナリオを保護するには、True を指定します。この引数はワークシートの場合のみ有効です。 | TRUE |
UserInterfaceOnly | True を指定すると、画面上からの変更は保護されますが、マクロからの変更は保護されません。 この引数を省略すると、マクロからも、画面上からも変更することができなくなります。 |
FALSE |
AllowFormattingCells | True を指定すると、ユーザーは保護されたワークシートのセルを書式化することができます。 | FALSE |
AllowFormattingColumns | True を指定すると、ユーザーは保護されたワークシートの列を書式化することができます。 | FALSE |
AllowFormattingRows | True を指定すると、ユーザーは保護されたワークシートの行を書式化することができます。 | FALSE |
AllowInsertingColumns | True を指定すると、ユーザーは保護されたワークシートに列を挿入することができます。 | FALSE |
AllowInsertingRows | True を指定すると、ユーザーは保護されたワークシートに行を挿入することができます。 | FALSE |
AllowInsertingHyperlinks | True を指定すると、ユーザーは保護されたワークシートにハイパーリンクを挿入することができます。 | FALSE |
AllowDeletingColumns | True を指定すると、ユーザーは保護されたワークシートの列を削除することができ、削除される列のセルはすべてロック解除されます。 | FALSE |
AllowDeletingRows | True を指定すると、ユーザーは保護されたワークシートの行を削除することができ、削除される行のセルはすべてロック解除されます。 | FALSE |
AllowSorting | True を指定すると、ユーザーは保護されたワークシートで並べ替えを行うことができます。 並べ替え範囲内のセルは、ロックと保護が解除されている必要があります。 |
FALSE |
AllowFiltering | True を指定すると、ユーザーは保護されたワークシートにフィルターを設定することができます。 ユーザーは、フィルター条件を変更できますが、オートフィルターの有効と無効を切り替えることはできません。 |
FALSE |
AllowUsingPivotTables | True を指定すると、ユーザーは保護されたワークシートでピボットテーブル レポートを使用することができます。 | FALSE |
全ての引数がオプション(任意指定)です。
これらは、「シートの保護」のダイアログ画面のチェックボックスに対応しています。

複雑な指定をする場合は、マクロの記録を利用すると良いでしょう。
Contents
「セルの書式設定」→「保護」→「ロック」
ここに、チェックが付いていて、

Rangeオブジェクト.Locked = True
DrawingObjects、Scenarios
オブジェクトの編集
シナリオの編集
となっています。
つまり、シート保護した時に、編集を許可する場合にチェックを付けます。
他の引数は、チェックを付けた時にTrueなのですが、
この2つは、チェックを外した時がTrueになります。
マクロの記録を使う場合は、少し注意が必要です。
UserInterfaceOnly
つまり、これで保護した場合はユーザー操作からは保護されますが、VBAからは保護されない状態になります。
UserInterfaceOnlyをTrueに設定してからワークブックを保存して、再度ワークブックを開いたときにはワークシート全体 (ユーザーインターフェイスだけでなく) が完全に保護されてしまいます。
つまり、ワークブックを開いた後にUserInterfaceOnlyをTrueに毎回再設定する必要があります。
シートの保護解除
名前 | 説明 |
Password | シートの保護を解除するためのパスワードを指定します。 なお、パスワードでは大文字と小文字は区別されます。 シートの保護にパスワードが指定されていないときは、この引数は無視されます。 パスワードが設定されているにもかかわらず、この引数を省略するとパスワードの入力を促すダイアログ ボックスが表示されます。 |
引数はオプション(任意指定です)
シート保護・解除の実践例
Worksheets(1).Unprotect Password:="password"
'・・・シートへの変更処理・・・
Worksheets(1).Protect Password:="password" AllowFiltering:=True
上記では、保護に際しパスワードを設定しています。
また、
ユーザーにオートフィルタの使用を許可しています。
ブックの保護
名前 | 説明 |
Password | ワークシートまたはブックのパスワードを示す文字列。 大文字と小文字が区別されます。 この引数を省略すると、パスワードを使用せずにワークシートまたはブックの保護を解除できます。 この引数でパスワードを指定すると、ワークシートまたはブックの保護を解除するときにパスワードが必要になります。 パスワードを忘れると、ワークシートまたはブックの保護を解除できなくなります。 |
Structure | ブックの構造 (各シートの相対位置) を保護する場合はTrue。 既定値はTrueです。 StructureをFalseとした場合はブック保護が有効になりません。 |
Windows | ブックのウィンドウを保護する場合は True。 この引数を省略すると、ウィンドウは保護されません。 |
全ての引数がオプション(任意指定)です。

ブックの保護解除
名前 | データ型 | 説明 |
Password | バリアント型 (Variant) | ブックの保護を解除するためのパスワードを示す文字列。 パスワードでは大文字と小文字が区別されます。 ブックがパスワードで保護されていない場合、この引数は無視されます。 対象のブックがパスワードで保護されている場合、この引数を省略すると、そのブックの保護を解除することはできません。 |
引数はオプション(任意指定です)
最後に
しかし、
たとえブックを保護しても、Excelファイルは削除できてしまいます。
最終的には、バックアップと運用ルールをしっかり決めておくことと、
使用者全員が最低限のエクセル知識を持つことが肝心です。
同じテーマ「マクロVBA入門」の記事
第69回.シートの非表示(Visible,Hidden)
新着記事NEW ・・・新着記事一覧を見る
イータ縮小ラムダ(eta reduced lambda)|エクセル入門(2023-11-20)
PIVOTBY関数(縦軸と横軸でグループ化して集計)|エクセル入門(2023-11-19)
GROUPBY関数(縦軸でグループ化して集計)|エクセル入門(2023-11-18)
PY関数(Pythonコードをセル内で実行)|エクセル入門(2023-11-17)
画像「セルに配置」のVBAについて(365の新機能)|VBA技術解説(2023-11-13)
スピルのゴーストの範囲を選択するVBA|ツイッター出題回答 (2023-10-31)
エクセル試験3:月間の所定労働時間|エクセル練習問題(2023-10-04)
エクセル試験2:所得税の計算|エクセル練習問題(2023-10-04)
エクセル試験1:曜日別の平均客単価|エクセル練習問題(2023-10-04)
列全体を指定する時のRangeとColumnsの違い|ツイッター出題回答 (2023-09-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.繰り返し処理(For Next)|VBA入門
4.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
5.変数宣言のDimとデータ型|VBA入門
6.条件分岐(IF)|VBA入門
7.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
8.並べ替え(Sort)|VBA入門
9.マクロとは?VBAとは?VBAでできること|VBA入門
10.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。