Excel VBAメモ シートの保護を解除してみる

VBA

野暮用で必要になったので。
ポイントはこんな感じ。

  • 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枚目のシートも表示してセルに値を入力してみるとできた。

んまま、明日への自分へのメモってことで。