第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:=True
として、初めてセルが保護されます。
DrawingObjects、Scenarios
オブジェクトの編集
シナリオの編集
となっています。
つまり、シート保護した時に、編集を許可する場合にチェックを付けます。
他の引数は、チェックを付けた時にTrueなのですが、
この2つは、チェックを外した時がTrueになります。
マクロの記録を使う場合は、少し注意が必要です。
シートの保護解除
名前 | 説明 |
Password | シートの保護を解除するためのパスワードを指定します。 なお、パスワードでは大文字と小文字は区別されます。 シートの保護にパスワードが指定されていないときは、この引数は無視されます。 パスワードが設定されているにもかかわらず、この引数を省略するとパスワードの入力を促すダイアログ ボックスが表示されます。 |
引数はオプション(任意指定です)
シート保護・解除の実践例
Worksheets(1).Unprotect Password:="password"
'・・・シートへの変更処理・・・
Worksheets(1).Protect Password:="password" AllowFiltering:=True
上記では、保護に際しパスワードを設定しています。
また、
ユーザーにオートフィルタの使用を許可しています。
ブックの保護
名前 | 説明 |
Password | ワークシートまたはブックのパスワードを示す文字列。 大文字と小文字が区別されます。この引数を省略すると、パスワードを使用せずにワークシートまたはブックの保護を解除できます。 この引数でパスワードを指定すると、ワークシートまたはブックの保護を解除するときにパスワードが必要になります。 パスワードを忘れると、ワークシートまたはブックの保護を解除できなくなります。 |
Structure | ブックの構造 (各シートの相対位置) を保護する場合はTrue。 既定値はFalse です。 |
Windows | ブックのウィンドウを保護する場合は True。 この引数を省略すると、ウィンドウは保護されません。 |
全ての引数がオプション(任意指定)です。
ブックの保護解除
名前 | データ型 | 説明 |
Password | バリアント型 (Variant) | ブックの保護を解除するためのパスワードを示す文字列。 パスワードでは大文字と小文字が区別されます。 ブックがパスワードで保護されていない場合、この引数は無視されます。 対象のブックがパスワードで保護されている場合、この引数を省略すると、そのブックの保護を解除することはできません。 |
引数はオプション(任意指定です)
最後に
しかし、
たとえブックを保護しても、Excelファイルは削除できてしまいます。
最終的には、
バックアップと運用ルールをしっかり決めておくことと、
使用者全員が最低限のエクセル知識を持つことが肝心です。
同じテーマ「マクロVBA入門」の記事
第65回.シートの挿入、名前の変更(Add,Name)
第66回.シートのコピー・移動・削除(Copy,Move,Delete)
第67回.総合練習問題7
第68回.シートの保護、ブックの保護(Protect)
第69回.シートの非表示(Visible,Hidden)
第70回.ウィンド枠の固定(FreezePanes)
第71回.印刷(PrintOut)
第72回.印刷プレビュー(PrintPreview)
第139回.エクスポート(PDF/XPS)
第73回.ページ設定(PageSetup,PageBreak)
第74回.ファイルを開くダイアログ(GetOpenFilename)
新着記事NEW ・・・新着記事一覧を見る
VBA100本ノック 61本目:「ふりがな」の取得と設定|VBA練習問題(1月6日)
VBA100本ノック 60本目:「株式会社」の表記ゆれ置換|VBA練習問題(1月5日)
VBA100本ノック 59本目:12ヶ月分のシートを四半期で分割|VBA練習問題(1月4日)
Select Caseでの短絡評価(ショートサーキット)の使い方|VBA技術解説(1月3日)
VBA100本ノック 迷宮編:巡回セル問題|VBA練習問題(12月31日)
VBA100本ノック 58本目:番号リストを簡潔にした文字列で返す|VBA練習問題(12月30日)
VBA100本ノック 57本目:ファイルの更新日時|VBA練習問題(12月29日)
VBA100本ノック 56本目:数式内の自身のシート名を消す|VBA練習問題(12月28日)
VBA100本ノック 55本目:他ブックのマクロを起動|VBA練習問題(12月26日)
VBA100本ノック 54本目:シートのChangeイベント|VBA練習問題(12月25日)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.RangeとCellsの使い方|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.マクロって何?VBAって何?|VBA入門
5.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
6.繰り返し処理(For Next)|VBA入門
7.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
8.セルに文字を入れるとは(Range,Value)|VBA入門
9.とにかく書いてみよう(Sub,End Sub)|VBA入門
10.繰り返し処理(Do Loop)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。