ExcelマクロVBA入門
第68回.シートの保護、ブックの保護(Protect)

ExcelマクロVBAの基本と応用、エクセルVBAの初級・初心者向け解説
最終更新日:2019-07-17

第68回.シートの保護、ブックの保護(Protect)


せっかく作ったExcelシートを間違って壊してしまったり、Excel操作に慣れない人が壊してしまったりしたら困ります。
無用な改変、意図しない変更からシートを保護するには、ワークシートを保護します。


ただしシートの削除は、シート保護では守れません、
シートの保護に対応するには、ブックの保護が必要です。

マクロVBAで、シート保護、ブック保護する場合の詳細について解説します。

シートの保護

Worksheet.Protectメソッド
ワークシートを保護し、変更できないようにします。
式.Protect(Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly, AllowFormattingCells, AllowFormattingColumns, AllowFormattingRows, AllowInsertingColumns, AllowInsertingRows, AllowInsertingHyperlinks, AllowDeletingColumns, AllowDeletingRows, AllowSorting, AllowFiltering, AllowUsingPivotTables)
式には、Worksheetオブジェクトを指定します。



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

全ての引数がオプション(任意指定)です。

引数が非常に多くあります。
これらは、「シートの保護」のダイアログのチェックボックスに対応しています。

マクロ VBA シート保護

この一つ一つのチェックが、上記の引数に対応しています。
複雑な指定をする場合は、マクロの記録を利用すると良いでしょう。
注意する引数
Contents
エクセルの基本ですが、ロックされているセルが対象です。
「セルの書式設定」→「保護」→「ロック」
ここに、チェックが付いていて、
Contents:=True
として、初めてセルが保護されます。

DrawingObjects、Scenarios
上のシート保護のダイアログは、
オブジェクトの編集
シナリオの編集
となっています。
つまり、シート保護した時に、編集を許可する場合にチェックを付けます。
他の引数は、チェックを付けた時にTrueなのですが、
この2つは、チェックを外した時がTrueになります。
マクロの記録を使う場合は、少し注意が必要です。

シートの保護解除

Worksheet.Unprotect メソッド
ワークシートの保護を解除します。
式.Unprotect Password

名前 説明
Password シートの保護を解除するためのパスワードを指定します。
なお、パスワードでは大文字と小文字は区別されます。
シートの保護にパスワードが指定されていないときは、この引数は無視されます。
パスワードが設定されているにもかかわらず、この引数を省略するとパスワードの入力を促すダイアログ ボックスが表示されます。

引数はオプション(任意指定です)

シート保護・解除の実践例

ユーザーには変更させないシートを、マクロVBAで変更する場合。



Worksheets(1).Unprotect Password:="password"
'・・・シートへの変更処理・・・
Worksheets(1).Protect Password:="password" AllowFiltering:=True

上記では、保護に際しパスワードを設定しています。
また、
ユーザーにオートフィルタの使用を許可しています。

ブックの保護

Workbook.Protect メソッド
変更できないようにブックを保護します。
式.Protect(Password, Structure, Windows)
式には、Workbook オブジェクトを指定します。

名前 説明
Password ワークシートまたはブックのパスワードを示す文字列。
大文字と小文字が区別されます。この引数を省略すると、パスワードを使用せずにワークシートまたはブックの保護を解除できます。
この引数でパスワードを指定すると、ワークシートまたはブックの保護を解除するときにパスワードが必要になります。
パスワードを忘れると、ワークシートまたはブックの保護を解除できなくなります。
Structure ブックの構造 (各シートの相対位置) を保護する場合はTrue。
既定値はFalse です。
Windows ブックのウィンドウを保護する場合は True。
この引数を省略すると、ウィンドウは保護されません。

全ての引数がオプション(任意指定)です。

ブックの保護解除

Workbook.Unprotect メソッド
シートまたはブックの保護を解除します。保護されていないシートやブックに対しては、このメソッドは無効です。
式.Unprotect(Password)
式には、Workbook オブジェクトを指定します。

名前 データ型 説明
Password バリアント型 (Variant) ブックの保護を解除するためのパスワードを示す文字列。
パスワードでは大文字と小文字が区別されます。
ブックがパスワードで保護されていない場合、この引数は無視されます。
対象のブックがパスワードで保護されている場合、この引数を省略すると、そのブックの保護を解除することはできません。

引数はオプション(任意指定です)

最後に

作ったエクセルを事故(間違った操作等)から守るために保護は必須です。
しかし、
たとえブックを保護しても、Excelファイルは削除できてしまいます。
最終的には、
バックアップと運用ルールをしっかり決めておくことと、
使用者全員が最低限のエクセル知識を持つことが肝心です。



同じテーマ「マクロVBA入門」の記事

第65回.シートの挿入、名前の変更(Add,Name)
第66回.シートのコピー・移動・削除(Copy,Move,Delete)
第67回.総合練習問題7
第68回.シートの保護、ブックの保護(Protect)
第69回.シートの非表示(Visible)
第70回.ウィンド枠の固定(FreezePanes)
第71回.印刷(PrintOut)
第72回.印刷プレビュー(PrintPreview)
第73回.ページ設定(PageSetup)
第74回.ファイルを開くダイアログ(GetOpenFilename)
第75回.名前を付けて保存ダイアログ(GetSaveAsFilename)


新着記事NEW ・・・新着記事一覧を見る

VBAコードの全プロシージャー・プロパィ一覧を取得|VBAサンプル集(10月12日)
VBAでエラー行番号を取得できるErl関数|VBA技術解説(10月12日)
手動計算時の注意点と再計算方法|ExcelマクロVBA技術解説(10月9日)
引数の数を可変にできるパラメーター配列(ParamArray)|VBA入門(10月7日)
VBEの使い方:デバッグ|ExcelマクロVBA入門(10月6日)
VBAにおける配列やコレクションの起点について|VBA技術解説(10月5日)
VBEの使い方:オブジェクト ブラウザー|VBA入門(10月5日)
VBEの使い方:ウォッチ ウィンドウ|VBA入門(10月4日)
VBEの使い方:ローカル ウィンドウ|VBA入門(10月3日)
VBEの使い方:イミディエイト ウィンドウ|VBA入門(10月2日)


アクセスランキング ・・・ ランキング一覧を見る

1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.RangeとCellsの使い方|ExcelマクロVBA入門
4.Range以外の指定方法(Cells,Rows,Columns)|VBA入門
5.変数とデータ型(Dim)|ExcelマクロVBA入門
6.繰り返し処理(For Next)|ExcelマクロVBA入門
7.マクロって何?VBAって何?|ExcelマクロVBA入門
8.ひらがな⇔カタカナの変換|エクセル基本操作
9.空白セルを正しく判定する方法(IsEmpty,IsError,HasFormula)|VBA技術解説
10.セルに文字を入れるとは(Range,Value)|VBA入門



  • >
  • >
  • >
  • シートの保護、ブックの保護(Protect)

  • このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。


    記述には細心の注意をしたつもりですが、
    間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
    なお、掲載のVBAコードは自己責任で使ってください。万一データ破損等の損害が発生しても責任は負いません。




    このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
    本文下部へ