教えて!ExcelVBA!

ExcelVBAの基礎知識・書き方について紹介します。

【ExcelVBA シート操作】シートを保護(Protect)又は保護解除(UnProtect)するにはどうすればいいの?教えて!

シートを保護又は保護解除するには「Protect」「UnProtect」を使います。

構文

ProtectとUnProtectは、保護と解除を行うためのメソッドです。それぞれの構文と解説を見ていきましょう。

シートの保護(Protectメソッド)
Worksheets("シート名").Protect パスワード, オプション

解説

・Worksheets("シート名"):保護対象のシートを指定します。
・パスワード:シートの保護を解除する際に必要なパスワードを指定します。省略可能です。
・オプション:保護の詳細な設定を行うためのパラメータです。省略可能です。

シートの保護解除(UnProtectメソッド)
Worksheets("シート名").UnProtect パスワード

解説

・Worksheets("シート名"):解除対象のシートを指定します。
・パスワード:シートの保護を解除するために必要なパスワードを指定します。省略可能です。

使い方

ProtectとUnProtectの使い方について具体的に説明します。

・シートの保護
Protectメソッドを使用して、シートを保護する方法を説明します。

Sub ProtectSheet()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("シート名")
    ' パスワードなしで保護
    ws.Protect
    ' パスワードありで保護
    ws.Protect "パスワード"
    ' オプションを指定して保護
    ws.Protect "パスワード", UserInterfaceOnly:=True, AllowFiltering:=True
End Sub

Set ws = ThisWorkbook.Worksheets("シート名"):保護するシートを指定します。
ws.Protect:パスワードなしで保護します。
ws.Protect "パスワード":指定したパスワードで保護します。
ws.Protect "パスワード", UserInterfaceOnly:=True, AllowFiltering:=True:オプションを指定して保護します。UserInterfaceOnlyは、VBAを使用して保護を解除することを制限し、AllowFilteringは自動フィルタリングの使用を許可します。

・シートの保護解除
UnProtectメソッドを使用して、保護されたシートを解除する方法を説明します。

Sub UnprotectSheet()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("シート名")
    ' パスワードなしで解除
    ws.Unprotect
    ' パスワードありで解除
    ws.Unprotect "パスワード"
End Sub

Set ws = ThisWorkbook.Worksheets("シート名"):解除するシートを指定します。
ws.Unprotect:パスワードなしで保護を解除します。
ws.Unprotect "パスワード":指定したパスワードで保護を解除します。

プログラミング例

具体的なプログラミング例を示します。

Sub ProtectAndUnprotectSheet()
    Dim ws As Worksheet
    Set ws = ThisWorkbook.Worksheets("シート名")
    ' シートの保護
    ws.Protect "パスワード", UserInterfaceOnly:=True
    ' 保護されたシートに対して処理を実行する
    ・・・・・・・・・・・・・・・・・
    ' シートの保護解除
    ws.Unprotect "パスワード"
End Sub

この例では、シートを保護し、保護されたシートに対して処理を実行した後に保護を解除しています。

まとめ

ExcelVBAを使ってシートの保護と解除の方法を学びました。Protectメソッドを使用してシートを保護します。パスワードやオプションの設定が可能です。UnProtectメソッドを使用して保護されたシートを解除します。パスワードの指定が可能です。これらのメソッドを適切に活用することで、Excelのデータの保護やセキュリティの向上に役立てることができます。