シートの保護

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
UserInterfaceOnlyTrue を指定すると、画面上からの変更は保護されますが、マクロからの変更は保護されません。この引数を省略すると、マクロからも、画面上も変更することができなくなります。False
AllowFormattingCellsTrue を指定すると、ユーザーは保護されたワークシートのセルを書式化することができますFalse
AllowFormattingColumnsTrue を指定すると、ユーザーは保護されたワークシートの列を書式化することができますFalse
AllowFormattingRowsTrue を指定すると、ユーザーは保護されたワークシートの行を書式化することができますFalse
AllowInsertingColumnsTrue を指定すると、ユーザーは保護されたワークシートに列を挿入することができますFalse
AllowInsertingRowsTrue を指定すると、ユーザーは保護されたワークシートに行を挿入することができますFalse
AllowInsertingHyperlinksTrue を指定すると、ユーザーは保護されたワークシートにハイパーリンクを挿入することができますFalse
AllowDeletingColumnsTrue を指定すると、ユーザーは保護されたワークシートの列を削除することができ、削除される列のセルはすべてロック解除されますFalse
AllowDeletingRowsTrue を指定すると、ユーザーは保護されたワークシートの行を削除することができ、削除される行のセルはすべてロック解除されますFalse
AllowSortingTrue を指定すると、ユーザーは保護されたワークシートで並べ替えを行うことができます。並べ替え範囲内のセルは、ロックと保護が解除されている必要がありますFalse
AllowFilteringTrue を指定すると、ユーザーは保護されたワークシートにフィルタを設定することができます。ユーザーは、フィルタ条件を変更できますが、オート フィルタの有効と無効を切り替えることはできませんFalse
AllowUsingPivotTablesTrue を指定すると、ユーザーは保護されたワークシートでピボットテーブル レポートを使用することができます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

これから IT 関連の知識を学ばれる方を対象に、色々な言語でのプログラミング方法や関連する技術、開発環境構築などに関する解説サイトを運営しています。