VBAで自動化 VBA一覧 セル・シート・ブック操作 保護・解除

【VBA】Protectメソッド:操作制限・保護・マクロ有効

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

セルの編集はできなくなりますが、ユーザーは書式変更を行うことができます。

列の挿入を許可する

列や行の挿入を許可する場合、AllowInsertingColumnsAllowInsertingRowsを使用します。

Sub ProtectAndAllowInsertingColumns()

' 列の挿入を許可しながらシートを保護
Sheets("Sheet1").Protect AllowInsertingColumns:=True

End Sub

列の挿入が許可されますが、他の操作(セルの編集など)は制限されます。

並べ替えやフィルタを許可する

データの並べ替えやフィルタリングを許可する場合、AllowSortingAllowFilteringを使用します。

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マクロでは自由に操作を行うことができます。

【VBA】Unprotectメソッド:ブック・シートの保護解除

-VBAで自動化, VBA一覧, セル・シート・ブック操作, 保護・解除