●オブジェクト.Protect(Password)
※ワークシートを保護します。
記述例:Worksheets(“Sheet1″).Protect:=”PassABC”
下記のサンプルプログラムは、指定したワークシートに対して、ワークシートの保護を行うサンプルプログラムです。
プログラムは、一行ですが下記の手順と同じ作業を行います。
【この手順と同じ内容が実行されます。】
①シート「機密情報」を選択します。
②シートの保護を選択
③シートの保護のパスワードを入力します。【kimitsu】
④OKボタンで確定させます。
'******* AKIRA55.COM ****** https://akira55.com/protect_unprotect
'
Sub Protect01() 'ワークシートの保護
Worksheets("機密情報").Protect Password:="kimitsu"
MsgBox "ワークシートを保護しました。"
End Sub
'
●実行前~実行後 ※プログラム実行後、指定したシート「機密情報」のワークシートにパスワード保護を設定しました。
(画面クリックして拡大)
'******* AKIRA55.COM ****** https://akira55.com/protect_unprotect
'
Sub Protect02() '指定したワークシートのみワークシートの保護を行う
Dim ws01, ws02, ws03 As Worksheet
Set ws01 = Worksheets("一般情報")
Set ws02 = Worksheets("機密情報")
Set ws03 = Worksheets("個人情報")
ws02.Protect Password:="kimitsu"
ws03.Protect Password:="kojin"
End Sub
'
下記のサンプルプログラムは、全てのワークシートに対してワークシートの保護・各シートごとにパスワードので保護設定を行う。(ループ設定)
【全てのワークシートに対して、各シートごとにパスワードを設定してシート保護を行う。】
1・・シート名【一般情報】・・・ワークシートの保護 パスワード【ABC】
2・・シート名【機密情報】・・・ワークシートの保護 パスワード【123】
3・・シート名【個人情報】・・・ワークシートの保護 パスワード【あいう】
'******* AKIRA55.COM ****** https://akira55.com/protect_unprotect
'
Sub Protect03() '全てのワークシートに対してワークシートの保護・各シートごとにパスワードの設定を行う。
Dim ws As Worksheet
Dim Pass_set As String
For Each ws In Worksheets '全てのワークシート繰り返す
Pass_set = InputBox(ws.Name & "シートの保護パスワードを入力して下さい")
ws.Protect Password:=Pass_set 'ワークシートに保護パスワードを設定します。
Next ws
End Sub
'
下記のサンプルプログラムは、指定したワークシート名に対してワークシートの保護パスワードを設定します。
【指定したワークシート名に対して保護設定:条件】
①・・・ワークシート名に「機密情報」が含まれるワークシートは、パスワードを「kimitsu」に設定
②・・・ワークシート名に「個人情報」が含まれるワークシートは、パスワードを「kojin」に設定
③・・・それ以外にワークシートが有る場合は、何もしない「ワークシートの保護なし」
'******* AKIRA55.COM ****** https://akira55.com/protect_unprotect
'
Sub Protect04() '指定したワークシート名に対して保護パスワードを設定します。
Dim ws As Worksheet
Dim Pass_set As String
For Each ws In Worksheets '全てのワークシート繰り返す
Select Case True
Case ws.Name Like "*個人情報*"
ws.Protect Password:="kojin"
'シート名に「個人情報」がある場合は、”Kojin”でパスワードシート保護設定
Case ws.Name Like "*機密情報*"
ws.Protect Password:="kimitsu"
'シート名に「機密情報」がある場合は、”kimitsu”でパスワードシート保護設定
End Select
Next ws
End Sub
'
●オブジェクト.UnProtect(Password)
※ワークシートを保護を解除します。
記述例:Worksheets(“Sheet1″).UnProtect:=”PassABC”
下記のサンプルプログラムは、指定したワークシートの保護を解除するサンプルプログラムです。既にワークシートの保護を行っているワークシート「機密情報」の保護を解除します。
【注意】:ワークシート保護パスワードは、「kimitsu」保護されている条件で下記のプログラムを実行します。
'******* AKIRA55.COM ****** https://akira55.com/protect_unprotect
'
Sub UnProtect01() 'ワークシートの保護解除
Worksheets("機密情報").Unprotect Password:="kimitsu"
End Sub
※ワークシート名「機密情報」⇒ 解除パスワード「kimitsu」で解除されました。
【注意】:ワークシートに対して保護パスワードと解除パスワードが異なる時は、下記の実行時エラー’1004’が発生します。このエラー回避方法については、次のサンプル②で説明いたします。
下記のサンプルプログラムは、指定したワークシートの保護を解除するサンプルプログラムです。既にワークシートの保護を行っているワークシート「機密情報」の保護を解除を解除します。今回のサンプルプログラムは、ワークシートの保護を解除する際に、解除パスワードを聞いてきますが、異なるパスワードを入力すると、実行時エラーが発生するのでエラーを回避する仕組みもプログラムに追記しています。
'******* AKIRA55.COM ****** https://akira55.com/protect_unprotect
'
Sub UnProtect02() 'ワークシートの保護解除
On Error GoTo UnprotectErr
Worksheets("機密情報").Unprotect
Exit Sub
UnprotectErr:
MsgBox Err.Description 'エラー時に発生するメッセージを表示する。
End Sub
'
下記のサンプルプログラムは、指定したワークシート名に対してワークシートの保護パスワードを設定します。
【指定したワークシート名に対して保護を解除:条件】
①・・ワークシート名に「個人情報」が含まれるシートは、パスワード「kojin」で解除する。
②・・ワークシート名に「機密情報」が含まれるシートは、パスワード「kimitsu」で解除する。
③・・その他のワークシートが有る場合は、何もしません。
'******* AKIRA55.COM ****** https://akira55.com/protect_unprotect
'
Sub UnProtect03() '指定したワークシート名に対して保護パスワードを解除します。
Dim ws As Worksheet
For Each ws In Worksheets '全てのワークシート繰り返す
Select Case True
Case ws.Name Like "*個人情報*"
ws.Unprotect Password:="kojin"
'シート名に「個人情報」がある場合は、”Kojin”パスワードでシート保護を解除
Case ws.Name Like "*機密情報*"
ws.Unprotect Password:="kimitsu"
'シート名に「機密情報」がある場合は、”kimitsu”パスワードでシート保護を解除
End Select
Next ws
End Sub
'
'******* AKIRA55.COM ****** https://akira55.com/protect_unprotect
'
Sub protectCheck01() ' ワークシートが保護されているか確認する。
Dim SheetCheck As Boolean
SheetCheck = Worksheets("機密情報").ProtectContents ' シートが保護されているか
MsgBox SheetCheck
End Sub
'
下記のサンプルプログラムは、ブックにあるすべてのワークシートの保護状態を確認するサンプルプログラムです。ワークシートを一つずつワークシートの保護状態を確認して、保護状態をメッセージボックで表示させます。
'******* AKIRA55.COM ****** https://akira55.com/protect_unprotect
'
Sub protectCheck02() ' 全てのワークシートが保護されているか確認する。
Dim ws As Worksheet
Dim SheetCheck As Boolean
For Each ws In Worksheets '全てのワークシート繰り返す
SheetCheck = ws.ProtectContents
If SheetCheck = True Then
MsgBox ws.Name & "は、シート保護されています。"
Else
MsgBox ws.Name & "は、シート保護されていません。"
End If
Next ws
End Sub
'