Protect
メソッドは、Excel VBAを使用してシートやワークブックを保護するために使用されます。データの変更を制限したり、特定の操作をロックすることができます。ExcelのシートやワークブックをVBAコードで自動的に保護することで、誤った編集や重要なデータの破損を防ぐことが可能です。
目次
Excel VBAでのProtectメソッドの使い方
Protectメソッドとは?
Protect
メソッドは、シートやワークブックに対して保護をかける機能です。保護をかけることで、ユーザーがセルや範囲の編集、フォーマットの変更、行や列の挿入や削除などを制限することができます。VBAコード内でこのメソッドを使うと、シートの保護を自動化できるため、誤操作からデータを守るために広く使用されています。
Protectメソッドの基本構文
Worksheet.Protect Password, DrawingObjects, Contents, Scenarios, UserInterfaceOnly, AllowFormattingCells, AllowFormattingColumns, AllowFormattingRows, AllowInsertingColumns, AllowInsertingRows, AllowInsertingHyperlinks, AllowDeletingColumns, AllowDeletingRows, AllowSorting, AllowFiltering, AllowUsingPivotTables
- Password: 保護に使用するパスワード(省略可能)
- DrawingObjects: 図形オブジェクトの編集を許可するかどうか(デフォルトは
True
) - Contents: セルの内容の編集を許可するかどうか(デフォルトは
True
) - Scenarios: シナリオの変更を許可するかどうか(デフォルトは
True
) - UserInterfaceOnly: ユーザーインターフェースだけを保護するかどうか(デフォルトは
False
) - AllowFormattingCells: セルの書式変更を許可するかどうか
- AllowFormattingColumns: 列の書式変更を許可するかどうか
- AllowFormattingRows: 行の書式変更を許可するかどうか
- AllowInsertingColumns: 列の挿入を許可するかどうか
- AllowInsertingRows: 行の挿入を許可するかどうか
- AllowInsertingHyperlinks: ハイパーリンクの挿入を許可するかどうか
- AllowDeletingColumns: 列の削除を許可するかどうか
- AllowDeletingRows: 行の削除を許可するかどうか
- AllowSorting: データの並べ替えを許可するかどうか
- AllowFiltering: データのフィルタリングを許可するかどうか
- AllowUsingPivotTables: ピボットテーブルの使用を許可するかどうか
シートを保護する
最も基本的な使い方として、特定のシートを保護します。この例では、Sheet1
を保護します。
Sub ProtectSheet()
' シート1を保護
Sheets("Sheet1").Protect
End Sub
Sheet1
が保護され、セルの編集や書式変更などができなくなります。保護されたシートは、ユーザーの操作が制限されます。
パスワードを設定してシートを保護する
シート保護にパスワードを設定することで、ユーザーが保護を解除する際にパスワードを求められます。
Sub ProtectSheetWithPassword()
' シート1をパスワード付きで保護
Sheets("Sheet1").Protect Password:="mypassword"
End Sub
Sheet1
に「mypassword」というパスワードが設定されて保護されます。保護を解除する際には、このパスワードを入力する必要があります。
シートの特定の機能を許可する
Protect
メソッドには、保護をかけながら特定の操作を許可するオプションが多く用意されています。これにより、シート全体を保護しながらも、ユーザーが特定の操作(例えば、セルの書式変更やフィルタの使用など)を引き続き行えるように設定することができます。
セルの書式変更を許可する
保護されたシートでも、セルの書式変更を許可する場合、AllowFormattingCells
オプションを使用します。
Sub ProtectAndAllowFormatting()
' セルの書式変更を許可しながらシートを保護
Sheets("Sheet1").Protect AllowFormattingCells:=True
End Sub
セルの編集はできなくなりますが、ユーザーは書式変更を行うことができます。
列の挿入を許可する
列や行の挿入を許可する場合、AllowInsertingColumns
やAllowInsertingRows
を使用します。
Sub ProtectAndAllowInsertingColumns()
' 列の挿入を許可しながらシートを保護
Sheets("Sheet1").Protect AllowInsertingColumns:=True
End Sub
列の挿入が許可されますが、他の操作(セルの編集など)は制限されます。
並べ替えやフィルタを許可する
データの並べ替えやフィルタリングを許可する場合、AllowSorting
やAllowFiltering
を使用します。
Sub ProtectAndAllowSortingAndFiltering()
' データの並べ替えとフィルタリングを許可しながらシートを保護
Sheets("Sheet1").Protect AllowSorting:=True, AllowFiltering:=True
End Sub
シートが保護されている状態でも、ユーザーがデータを並べ替えたりフィルタリングしたりできるように設定されています。
UserInterfaceOnlyオプションを使う
UserInterfaceOnly:=True
オプションを使用すると、ユーザーによるシート操作は制限されますが、VBAコードからはセルの操作が可能になります。これにより、シートを保護したまま、マクロでのセル編集を許可することができます。
【使用例: VBAコードでの操作を許可する】
Sub ProtectForUserInterfaceOnly()
' ユーザーによる操作を制限し、VBAでの操作を許可
Sheets("Sheet1").Protect Password:="mypassword", UserInterfaceOnly:=True
End Sub
ユーザーによるシートの操作は制限されますが、VBAコード内ではシートのセルを自由に操作できます。UserInterfaceOnly
は一度シートが再度開かれた際にリセットされるため、毎回設定が必要です。
ワークブック全体を保護する
Protect
メソッドは、シート単位だけでなく、ワークブック全体を保護することも可能です。ワークブックを保護することで、シートの追加や削除、シートの名前変更などを防ぐことができます。
【使用例: ワークブック全体を保護する】
Sub ProtectWorkbook()
' ワークブック全体を保護
ThisWorkbook.Protect Password:="workbookpassword"
End Sub
ワークブック全体を保護します。シートの追加や削除など、ワークブック全体に対する操作が制限されます。
まとめ
Excel VBAのProtect
メソッドは、シートやワークブックに対して保護を提供し、データの誤操作や破損を防ぐために役立つ機能です。保護をかけながらも、特定の操作を許可するオプションを利用することで、柔軟な管理が可能です。また、UserInterfaceOnly
オプションを使用すれば、ユーザーの操作を制限しつつ、VBAマクロでは自由に操作を行うことができます。