教えて!ExcelVBA!

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

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

構文

構文は以下の通りです。

シートを保護する場合
Worksheets("シート名").Protect Password:="パスワード"

解説

Protectメソッドは、指定したシートを保護します。シート名には保護するシートの名前を指定し、Password引数には保護解除するためのパスワードを指定します。パスワードは任意で設定できますが、必要に応じて他の人が不正な変更を行わないようにするために使用します。

シートを保護解除する場合
Worksheets("シート名").Unprotect Password:="パスワード"

解説

UnProtectメソッドは、指定したシートの保護を解除します。シート名には保護を解除するシートの名前を指定し、Password引数には保護されたシートのパスワードを指定します。

使い方

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

1.シートの保護

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は自動フィルタリングの使用を許可します。

2.シートの保護解除

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 "パスワード":指定したパスワードで保護を解除します。

プログラム例

以下に、具体的なプログラム例を紹介します。

例1

以下の例では、シートの保護と解除を行います。

Sub ProtectSheetExample()
    Dim sheet As Worksheet
    Dim password As String
    ' シートオブジェクトを取得
    Set sheet = ThisWorkbook.Worksheets("シート名")
    ' パスワードを設定
    password = "パスワード"
    ' シートを保護する
    sheet.Protect Password:=password
    ' メッセージを表示
    MsgBox "シートを保護しました。"
End Sub

この例では、シートオブジェクトを取得し、設定したパスワードを使用してシートを保護しています。

例2

以下の例では、シートの保護を解除します。

Sub UnprotectSheetExample()
    Dim sheet As Worksheet
    Dim password As String
    ' シートオブジェクトを取得
    Set sheet = ThisWorkbook.Worksheets("シート名")
    ' パスワードを設定
    password = "パスワード"
    ' シートの保護を解除する
    sheet.Unprotect Password:=password
    ' メッセージを表示
   MsgBox "シートの保護を解除しました。"
End Sub

この例では、シートオブジェクトを取得し、設定したパスワードを使用してシートの保護を解除しています。

まとめ

ProtectおよびUnProtectメソッドを使うことで、シートの保護と保護解除を簡単に行うことができます。シートの保護を活用することで、重要なデータや設定の誤操作や不正な変更を防止することができます。例えば、評価シートや成績表などの重要な情報が含まれるシートを保護し、不正な変更や削除を防止することができます。シートの保護を活用して、データのセキュリティと信頼性を向上させることができます。是非活用ください。