【VBA】ワークシートに保護を設定する

エクセルVBAで使うコードの備忘録。VBAで指定ワークシートに保護を設定するコード。

スポンサーリンク

Protectメソッド:保護の設定

ワークシートに保護を設定するには、「Worksheet」オブジェクトの「Protect」メソッドを使用します。引数として与えることが可能なオプションはたくさんあります。オプションを使って細かくどの要素に保護を設定するか選択することが可能です(例えば描画オブジェクトだけ保護しないなど)が、すべて省略可能です(詳細はマイクロソフトのこちらのページを参照)。

おそらく一番使う可能性の高いオプションはパスワードだと思います。「Protect」メソッドに引数として「Password」を設定すると、保護の解除にそのパスワードが必要になります。ちなみに、「Password」を設定せずに「Protect」メソッドを使用した場合は、保護の解除にパスワードを要求されなくなります。

なお、サンプルコードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

サンプルコード

Public Sub ProtectWorksheet()
    
    '--- 保護したいワークシートオブジェクト ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
    
    '--- 保護パスワード ---'
    Dim pass As String
    pass = "[パスワード]"
    
    '--- ワークシートに保護を設定 ---'
    Call ws.Protect(password:=pass)
    
End Sub

Unprotectメソッド:保護の解除

ワークシートの保護を解除するには「Unprotect」メソッドを使用します。引数として指定できるのは「Password」のみです。当たり前ですが、解除するには正しいパスワードを与えてやる必要があります。

こちらも、サンプルコードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

サンプルコード

Public Sub UnprotectWorksheet()
    
    '--- 保護解除したいワークシートオブジェクト ---'
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("[ワークシート名]")
    
    '--- 保護パスワード ---'
    Dim pass As String
    pass = "[パスワード]"
    
    '--- ワークシートの保護を解除 ---'
    Call ws.Unprotect(password:=pass)
    
End Sub