関数・メソッド

ワークシートを保護/保護解除する【Protect/Unprotectメソッド】【ExcelVBA】

構文

Worksheet.Protect (Password, Optionals…)
Worksheet.UnProtect (Password)

Password・・・シート保護のパスワードを指定可能(省略可)
Optionals
・・・ワークシート保護時に許可するユーザ操作を指定可能(省略可)※詳細は後述の表を参照

Protectメソッドで対象ワークシートを保護ます。
Unprotectedメソッドで対象ワークシートの保護解除します。
引数でパスワード指定や、ワークシート保護時に許可するユーザ操作をオプションで指定することもできます。

引数で指定できるオプションは下表の通りです。
一部を除き、校閲>シートの保護 で表示される「ユーザに許可する操作」の設定と同意になります。
(下表の説明欄に鍵括弧付き部分が設定名称に対応しています)

引数名 省略 定数/データ型 デフォルト値 説明
Password Variant型 シート保護のパスワード指定
DrawingObjects Variant型 True True:「オブジェクトの編集」を許可しない
Fasle: 「オブジェクトの編集」を許可する
Contents Variant型 True True:シートとロックされたセルの内容を保護する
Fasle: シートとロックされたセルの内容を保護しない
Scenarios Variant型 True True:シナリオの編集」を許可しない
Fasle: 「シナリオの編集」を許可する
UserInterfaceOnly Variant型 False True:ユーザ操作からワークシートを保護するが、マクロからは保護しない
Fasle: ユーザ操作及びマクロからワークシートを保護する
AllowFormattingCells Variant型 False True:「セルの書式設定」を許可する
Fasle: 「セルの書式設定」を許可しない
AllowFormattingColumns Variant型 False True:「列の書式設定」を許可する
Fasle: 「列の書式設定」を許可しない
AllowFormattingRows Variant型 False True:「行の書式設定」を許可する
Fasle: 「行の書式設定」を許可しない
AllowInsertingColumns Variant型 False True:「列の挿入」を許可する
Fasle: 「列の挿入」を許可しない
AllowInsertingRows Variant型 False True:保護されたシートで「行の挿入」を許可する
Fasle: 保護されたシートで「行の挿入」を許可しない
AllowInsertingHyperlinks Variant型 False True:「ハイパーリンクの挿入」を許可する
Fasle: 「ハイパーリンクの挿入」を許可しない
AllowDeletingColumns Variant型 False True:「列の削除」を許可する
Fasle: 「列の削除」を許可しない
AllowDeletingRows Variant型 False True:「行の削除」を許可する
Fasle: 「行の削除」を許可しない
AllowSorting Variant型 False True:「並べ替え」を許可する
Fasle: 「並べ替え」を許可しない
AllowFiltering Variant型 False True:「オートフィルタの使用」を許可する
Fasle: 「オートフィルタの使用」を許可しない
AllowUsingPivotTables Variant型 False True:「ピボットテーブルとピボットグラフの使用」を許可する
Fasle: 「ピボットテーブルとピボットグラフの使用」を許可しない

Protect/Unprotectメソッドのサンプルコード

Public Sub sample()
    
    '■デフォルトオプションでアクティブシートを保護/保護解除
    ActiveSheet.Protect
    ActiveSheet.Unprotect

    '■パスワード付きでアクティブシートを保護/保護解除
    ActiveSheet.Protect Password:="password"
    ActiveSheet.Unprotect Password:="password"

    '■特定のユーザ操作を全て許可してアクティブシートを保護する
    ActiveSheet.Protect _
        DrawingObjects:=False, _
        Scenarios:=False, _
        AllowFormattingCells:=True, _
        AllowFormattingColumns:=True, _
        AllowFormattingRows:=True, _
        AllowInsertingColumns:=True, _
        AllowInsertingRows:=True, _
        AllowInsertingHyperlinks:=True, _
        AllowDeletingColumns:=True, _
        AllowDeletingRows:=True, _
        AllowSorting:=True, _
        AllowFiltering:=True, _
        AllowUsingPivotTables:=True

    '■アクティブシート保護を解除する
    ActiveSheet.Unprotect

End Sub

注意点

  • DrawingObjectsとScenariosの引数は、他のパラメータとデフォルト値が反転している。
    混同しないように注意する。
  • 他の引数は、対象オプションにチェックを付けた時がTrueになりますが、上記引数は逆にFalseになります。

関連記事

 

コメント