【エクセルVBA】VBAでパスワード付のシートの保護を設定・解除する方法

★気に入ったらシェアをお願いします!


Protect,password,シートの保護解除,パスワード
皆様こんにちは、ノグチです。

前回は、ProtectメソッドのUseinterfaceOnlyオプションを使った、ユーザの操作は制限しつつ、VBAでのシート操作は許可するシートの保護設定の方法をご紹介しました。

【エクセルVBA】保護しているシートでマクロの操作だけ有効にする方法
ProtectメソッドのUserInterfaceOnlyオプションを使った、エクセルのシートの保護を設定する方法をご紹介しています。これを使えば、ユーザのシート内容の操作は制限しつつ、VBAはシート内の操作が可能なシートの保護が設定できますよ。

今回は、同じくProtectメソッドのPasswordオプションを使ったパスワード付のシートの保護設定と、UnpotectメソッドのPasswordオプションを使ったシートの保護解除の方法をご紹介していきます。

パスワードなしのシートの保護は簡単に解除されてしまう

まずシートの保護を設定ですが、 手動で設定したか、前回ご紹介したVBAのProtectメソッドのUserInterfaceOnlyオプションで設定したかによらず、 そのままだとエクセルツールメニューの「シートの保護解除」で簡単に解除されてしまいます。

そんな事態を防ぐために使えるのが、同じくProtectメソッドのPasswordオプション。

Passwordオプションは、シートの保護に対してパスワードを設定することができるオプションです。

このオプションを使ってパスワード付のシートの保護を設定しておけば、エクセルツールメニューから「シートの保護解除」をクリックされたとしても、パスワードを知られていない限りシートの保護が解除されることはありません。

Password オプションの記述方法

Password オプションの記述方法はこちら。 
Worksheetオブジェクト.Protect  Password:=”指定したいパスワード”
ここで指定するパスワードは、手動のシートの保護設定のパスワードと指定と同様に、半角英数字を使うことができます。

使用例

passwordオプションの使用例はこんな感じです。

前回ご紹介したUserInterfaceOnlyオプションと組み合わせて、B列とC列の計算処理を行い、パスワード付のシートの保護を設定する内容にしています。

VBAを実行してシートをクリックしてみると…
vba,エクセル,protect,password,実行結果

この通り、ちゃんとシートの保護が設定されていますね。

では、エクセルツールメニューから「シートの保護解除」をクリックしてみると…
vba,エクセル,protect,password,実行結果,パスワード入力
この通り、パスワード入力のウインドウが表示されて、パスワード付のシートの保護が設定されていることがわかります

シートの保護を解除する

Passwordオプションでパスワード付のシートの保護を解除する 

パスワード付のシートの保護設定をご紹介したところで、UnprotectメソッドのPasswordオプションを使った解除の方法のご紹介です。

Passwordオプションはパスワード付のシートの保護を解除するためのオプションで、このオプションを指定すると、パスワード付きのシートの保護が解除できます。

パスワード付のシートの保護を解除する際にこのオプションを指定しなかった場合は、手動でシートの解除を行うときと同様、パスワード入力のポップアップが表示されるようになります。

Passwordオプションの記述方法

Passwordオプションの記述方法はこちら。
Worksheetオブジェクト.Unprotect Password:=”シートの保護で指定したパスワード”

使用例

 UnprotectメソッドのPasswordオプションの使用例として、上のProtectメソッドの項で使った例で設定したシートの保護設定を解除するコードを用意しました。

ProtectメソッドのPasswordオプションで指定したパスワードを指定しています。

これで、パスワード付のシートの保護が解除されます。

ちなみに、Unprotectメソッドでシートの保護を解除しても、特にメッセージなどは表示されないので、場合によってはUnprotectメソッドの後にMsgBox関数などを使って、シートの保護が解除された旨のメッセージを表示させるのもいいかもしれません。

最後に

今回は、ProtectメソッドとUnprotectメソッドのPasswordオプションをご紹介しました。

前回ご紹介したUserInterfaceOnlyオプションと組み合わせて使用すれば、エクセルを勝手にユーザに操作される心配も少なくなりますね

次回は、ブックの保護をVBAで行う方法を下記でご紹介していますので、こちらも併せてご覧ください。

【エクセルVBA】シートの追加も削除も、名前さえ変えさせない!VBAでブックの保護を設定する方法
エクセルVBAのProtect/Unprotectメソッドを使ったブックの保護設定と、解除の方法をご紹介しています。このメソッドをvbaでの処理のためシートの追加や削除をされたくないエクセルツールに仕込んでおけば、ユーザによる勝手なシートの追加や削除、名前の変更を防ぐことができるようになります。

それでは、最後までお読みいただきありがとうございました!

連載目次:エクセル&VBAでブックやシートの保護をするテクニック

エクセルやVBAで「このシートは消されると困る」とか、「シートの名前を変えられるとVBAが動かなくなる」といった悩み、ありますよね。そんな時は「保護」をして操作ができないようにすることができます。本シリーズではエクセルやエクセルVBAでブックやシートの保護をするテクニックについてお伝えします。
  1. 【Excel】勝手な編集は許しません!初心者向けのシート保護設定
  2. 【Excel】勝手なシート操作を防ぐ!初心者向けのブックの保護設定
  3. 【エクセルVBA】Protect/Unprotectメソッドでシートの保護設定と解除をする方法
  4. 【エクセルVBA】保護しているシートでマクロの操作だけ有効にする方法
  5. 【エクセルVBA】VBAでパスワード付のシートの保護を設定・解除する方法
  6. 【エクセルVBA】シートの追加も削除も、名前さえ変えさせない!VBAでブックの保護を設定する方法

The following two tabs change content below.

ノグチ

元製造子会社SE、ERPパッケージシステムコンサルタント(販売管理、購買管理、生産管理、設備管理他)。 業務システム保守・導入両方やった経験をお伝えすることで、少しでもシステムや手作業に悩まされる人が減ればいいなぁ、楽にお仕事してもらえたらいいなぁと日々夢見ております。