- Home ›
- Excel VBA入門 ›
- ワークシートの操作
シートの保護
Excel VBA を使ってワークシートの保護に関する設定を行う方法を解説します。
(Last modified: )
ワークシートの保護を設定する
Worksheetオブジェクトの「Protect」メソッドを使います。
Dim sheet1 As Worksheet Set sheet1 = Worksheets(1) sheet1.Protect Password:="pass"
保護の解除の際にパスワード入力が必要とするには「Password」引数に保護解除のためのパスワードを設定します。
また保護の対象を細かく設定することが可能です。設定可能な項目と省略した場合のデフォルト値は次の通りです。
定数 | 対象 | デフォルト値 |
---|---|---|
DrawingObjects | 描画オブジェクトを保護させるには、True を指定します | False |
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 |
基本は全ての操作を保護する内容になっていますので、許可したい操作に関して「Allow....」引数に「True」を設定して許可して下さい。
セルの保護については、ロックされたセルが対象となります。セルはデフォルトでは全てロックされているので、特に設定変更をしていなければ全てのセルが保護の対象となります。特定のセルのロックを解除するには「ロックの解除」を参照して下さい。
「UserInterfaceOnly」引数を「True」に設定した場合、シートが保護されていてもマクロからは編集が可能となります。ただし、対象のセルが一度閉じられてから再度開いた場合には、マクロからも編集は不可となります。
サンプルプログラム
では簡単なサンプルで試してみましょう。
Sub テスト() Dim sheet1 As Worksheet Set sheet1 = Worksheets("Sheet1") sheet1.Protect Password:="pass", _ AllowFormattingCells:=True End Sub
上記マクロを実行すると次のようになります。
シートを保護しただけでは見た目上は変わりありませんがセルを編集しようとすると次のような警告ウィンドウが表示されます。
また今回は「AllowFormattingCells」引数に「True」を設定して、セルの書式設定だけは可能なように設定してあります。その為、「書式」メニューの中の「セル」メニューが有効になっています。
念のためExcelの画面上からシートの保護を解除してみましょう。まず「ツール」メニューの中の「保護」メニューをクリックし、さらに「シート保護の解除」をクリックします。
今回はパスワード付きでシートの保護を行っていますので、パスワード入力ウィンドウが表示されます。
シートを保護する時に設定したパスワードを入力します。今回は「pass」です。入力したら「OK」ボタンをクリックします。
シートの保護が解除されて、セルなどの編集が可能になります。
-- --
Excel VBA を使ってワークシートの保護に関する設定を行う方法を解説しました。
( Written by Tatsuo Ikura )
著者 / TATSUO IKURA
プログラミングや開発環境構築の解説サイトを運営しています。