VBAでExcelのシートを保護・解除する方法はとてもシンプルです。以下に、基本的なコードとオプション(パスワード付き、編集許可の細かい設定など)を紹介します。

✅ シートの保護をする(基本)
vbコピーする編集するSub シートを保護する()
Worksheets("Sheet1").Protect
End Sub
✅ パスワード付きで保護する
Sub パスワード付きで保護()
Worksheets("Sheet1").Protect Password:="mypassword"
End Sub
✅ シートの保護を解除する(基本)
Sub シートの保護を解除する()
Worksheets("Sheet1").Unprotect
End Sub
✅ パスワード付きの保護を解除
Sub パスワード付きの保護を解除()
Worksheets("Sheet1").Unprotect Password:="mypassword"
End Sub
✅ 保護のオプション(特定操作を許可する)
Sub オプション付きで保護()
Worksheets("Sheet1").Protect _
Password:="mypassword", _
DrawingObjects:=True, _
Contents:=True, _
Scenarios:=True, _
AllowFormattingCells:=True, _
AllowFormattingColumns:=True, _
AllowFormattingRows:=True, _
AllowInsertingRows:=True, _
AllowDeletingRows:=True, _
AllowSorting:=True, _
AllowFiltering:=True, _
AllowUsingPivotTables:=True
End Sub
🔍 よく使うオプション
オプション名 | 許可される操作 |
---|---|
AllowFormattingCells | セルの書式変更 |
AllowSorting | 並べ替え |
AllowFiltering | フィルターの操作 |
AllowUsingPivotTables | ピボットテーブルの使用 |
✅ すべてのシートを一括で保護/解除
保護:
Sub すべてのシートを保護()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Protect Password:="mypassword"
Next ws
End Sub
解除:
Sub すべてのシートを解除()
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
ws.Unprotect Password:="mypassword"
Next ws
End Sub
✅ 補足
- 保護された状態では、数式の変更や行列の追加削除などが制限されます。
- 保護しても「表示のみ」できる状態にして、特定の操作だけを許可することができます。