第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入門」の記事
第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 ・・・新着記事一覧を見る
TRIMRANGE関数(セル範囲をトリム:端の空白セルを除外)|エクセル入門(2024-08-30)
正規表現関数(REGEXTEST,REGEXREPLACE,REGEXEXTRACT)|エクセル入門(2024-07-02)
エクセルが起動しない、Excelが立ち上がらない|エクセル雑感(2024-04-11)
ブール型(Boolean)のis変数・フラグについて|VBA技術解説(2024-04-05)
テキストの内容によって図形を削除する|VBA技術解説(2024-04-02)
ExcelマクロVBA入門目次|エクセルの神髄(2024-03-20)
VBA10大躓きポイント(初心者が躓きやすいポイント)|VBA技術解説(2024-03-05)
テンキーのスクリーンキーボード作成|ユーザーフォーム入門(2024-02-26)
無効な前方参照か、コンパイルされていない種類への参照です。|エクセル雑感(2024-02-17)
初級脱出10問パック|VBA練習問題(2024-01-24)
アクセスランキング ・・・ ランキング一覧を見る
1.最終行の取得(End,Rows.Count)|VBA入門
2.セルのコピー&値の貼り付け(PasteSpecial)|VBA入門
3.変数宣言のDimとデータ型|VBA入門
4.繰り返し処理(For Next)|VBA入門
5.RangeとCellsの使い方|VBA入門
6.ブックを閉じる・保存(Close,Save,SaveAs)|VBA入門
7.セルのクリア(Clear,ClearContents)|VBA入門
8.メッセージボックス(MsgBox関数)|VBA入門
9.条件分岐(Select Case)|VBA入門
10.ブック・シートの選択(Select,Activate)|VBA入門
このサイトがお役に立ちましたら「シェア」「Bookmark」をお願いいたします。
記述には細心の注意をしたつもりですが、
間違いやご指摘がありましたら、「お問い合わせ」からお知らせいただけると幸いです。
掲載のVBAコードは動作を保証するものではなく、あくまでVBA学習のサンプルとして掲載しています。
掲載のVBAコードは自己責任でご使用ください。万一データ破損等の損害が発生しても責任は負いません。