野暮用で必要になったので。
ポイントはこんな感じ。
- Worksheet.ProtectContentsプロパティでシートが保護されているか確認する
- シートが保護されている場合はWorksheet.Unprotectメソッドで保護を解除する
サンプルで用意したExcelのファイルはこんな感じ。
シート1枚目は保護なし、シート2枚目は保護あり、シート3枚目は保護ありだけど非表示。
ちなみに保護のパスワードはなし。
保護の条件はこんな感じ。
コードはこんな感じ。
Public Sub Method()
' 変数を定義する
Dim objSheet As Worksheet
' シートの保護を解除する
On Error GoTo MethodEnd
' すべてのシートを対象にする
For Each objSheet In ActiveWorkbook.Sheets
' シートが保護されているかチェックする
If objSheet.ProtectContents = True Then
' シートが保護されている場合は保護を解除する
' ※パスワード付の場合は引数にパスワードを指定する必要がある
objSheet.Unprotect
End If
Next
MethodEnd:
End Sub
実行してみるとこんな。
パッと見は変化なし。
確認で2枚目のシートのセルに値を入力してみるとできた。
3枚目のシートも表示してセルに値を入力してみるとできた。
んまま、明日への自分へのメモってことで。



