関数・メソッド

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

構文

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

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

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

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

引数名省略定数/データ型デフォルト値説明
PasswordVariant型シート保護のパスワード指定
DrawingObjectsVariant型TrueTrue:「オブジェクトの編集」を許可しない
Fasle: 「オブジェクトの編集」を許可する
ContentsVariant型TrueTrue:シートとロックされたセルの内容を保護する
Fasle: シートとロックされたセルの内容を保護しない
ScenariosVariant型TrueTrue:シナリオの編集」を許可しない
Fasle: 「シナリオの編集」を許可する
UserInterfaceOnlyVariant型FalseTrue:ユーザ操作からワークシートを保護するが、マクロからは保護しない
Fasle: ユーザ操作及びマクロからワークシートを保護する
AllowFormattingCellsVariant型FalseTrue:「セルの書式設定」を許可する
Fasle: 「セルの書式設定」を許可しない
AllowFormattingColumnsVariant型FalseTrue:「列の書式設定」を許可する
Fasle: 「列の書式設定」を許可しない
AllowFormattingRowsVariant型FalseTrue:「行の書式設定」を許可する
Fasle: 「行の書式設定」を許可しない
AllowInsertingColumnsVariant型FalseTrue:「列の挿入」を許可する
Fasle: 「列の挿入」を許可しない
AllowInsertingRowsVariant型FalseTrue:保護されたシートで「行の挿入」を許可する
Fasle: 保護されたシートで「行の挿入」を許可しない
AllowInsertingHyperlinksVariant型FalseTrue:「ハイパーリンクの挿入」を許可する
Fasle: 「ハイパーリンクの挿入」を許可しない
AllowDeletingColumnsVariant型FalseTrue:「列の削除」を許可する
Fasle: 「列の削除」を許可しない
AllowDeletingRowsVariant型FalseTrue:「行の削除」を許可する
Fasle: 「行の削除」を許可しない
AllowSortingVariant型FalseTrue:「並べ替え」を許可する
Fasle: 「並べ替え」を許可しない
AllowFilteringVariant型FalseTrue:「オートフィルタの使用」を許可する
Fasle: 「オートフィルタの使用」を許可しない
AllowUsingPivotTablesVariant型FalseTrue:「ピボットテーブルとピボットグラフの使用」を許可する
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になります。

関連記事

 

コメント

タイトルとURLをコピーしました