前回は、ProtectメソッドのUseinterfaceOnlyオプションを使った、ユーザの操作は制限しつつ、VBAでのシート操作は許可するシートの保護設定の方法をご紹介しました。
パスワード付シートの保護を設定する
パスワードなしのシートの保護は簡単に解除されてしまう
まずシートの保護を設定ですが、 手動で設定したか、前回ご紹介したVBAのProtectメソッドのUserInterfaceOnlyオプションで設定したかによらず、 そのままだとエクセルツールメニューの「シートの保護解除」で簡単に解除されてしまいます。
そんな事態を防ぐために使えるのが、同じくProtectメソッドのPasswordオプション。
Passwordオプションは、シートの保護に対してパスワードを設定することができるオプションです。
Password オプションの記述方法
使用例
passwordオプションの使用例はこんな感じです。
前回ご紹介したUserInterfaceOnlyオプションと組み合わせて、B列とC列の計算処理を行い、パスワード付のシートの保護を設定する内容にしています。
Sub 計算処理() Dim rowc As Long '処理行数カウンター '****************************** '計算処理 '****************************** rowc = 2 Do While Cells(rowc, 1).Value <> "" 'B列とC列を乗算して、D列に結果を表示する Cells(rowc, 4).Value = Cells(rowc, 2).Value * Cells(rowc, 3).Value '次の行へ rowc = rowc + 1 Loop ThisWorkbook.Worksheets("Sheet1").Protect Password:="Password001" End Sub
この通り、ちゃんとシートの保護が設定されていますね。
シートの保護を解除する
Passwordオプションでパスワード付のシートの保護を解除する
パスワード付のシートの保護設定をご紹介したところで、UnprotectメソッドのPasswordオプションを使った解除の方法のご紹介です。
Passwordオプションはパスワード付のシートの保護を解除するためのオプションで、このオプションを指定すると、パスワード付きのシートの保護が解除できます。
Passwordオプションの記述方法
使用例
ProtectメソッドのPasswordオプションで指定したパスワードを指定しています。
Sub UnprotectSheet() ThisWorkbook.Worksheets("Sheet1").Unprotect Password:="Password001" End Sub
これで、パスワード付のシートの保護が解除されます。
ちなみに、Unprotectメソッドでシートの保護を解除しても、特にメッセージなどは表示されないので、場合によってはUnprotectメソッドの後にMsgBox関数などを使って、シートの保護が解除された旨のメッセージを表示させるのもいいかもしれません。
最後に
今回は、ProtectメソッドとUnprotectメソッドのPasswordオプションをご紹介しました。
前回ご紹介したUserInterfaceOnlyオプションと組み合わせて使用すれば、エクセルを勝手にユーザに操作される心配も少なくなりますね。
次回は、ブックの保護をVBAで行う方法を下記でご紹介していますので、こちらも併せてご覧ください。
それでは、最後までお読みいただきありがとうございました!
コメント
いつもお世話になっております。
この方法では、VBEを覗かれたらパスワードがバレてしまい、パスワードとしての機能を果たしていないような気がするのですが、それは致し方ないのでしょうか。