【エクセルVBA】Protect/Unprotectメソッドでシートの保護設定と解除をする方法

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


excel,vba,protect,unprotect,エクセル,シートの保護

皆様こんにちは、ノグチです。

VBAでツールを作ったはいいものの、使う人に勝手にシートを変更されてVBAが動かなくなってしまったことはありませんか?

「シートの保護でセルの変更を制限することはできるけど、VBAだけはセル操作させたい…」

また、「シートの保護を設定したシートのセルの値をVBAで変更したい」ということもありますよね。

そんなときに使えるのが、Worksheetオブジェクトの「Protect」メソッドと「Unprotect」メソッドです。

今回はこの2つのメソッドを使って、VBAでシートの保護設定と、解除する方法をご紹介します!

Protectメソッドは、指定したシートに対して「シート保護」を設定するメソッドです。

下記の記事で手動でシートの保護を設定する方法をご紹介しましたが、このメソッドを使えば、VBAにシートの保護設定をさせることができるのです。

【Excel】勝手な編集は許しません!初心者向けのシート保護設定
エクセルの「シートの保護」を使ったシートの値編集を制限したり、パスワードを使って特定の人だけに操作できるようにする方法をご紹介しています。関数やマクロを使ったエクセルブックのように、値やシートを操作されると正しく動作しなくなる、というときに便利な機能です。

このメソッドの記述方法はこちら。

Worksheetオブジェクト.Protect

このWorksheetオブジェクトには、シートの保護を設定したいシートを指定します。

Protectメソッドでシートの保護を設定する

では早速このProtectメソッドを使って、シートの保護を設定してみましょう。

下図の表のB列とC列を乗算して、D列に乗算の結果を出力するコードを用意しました。

このVBAで出力した結果があるシートに、Protectメソッドを使ってシートの保護を設定してみましょう。

protectメソッド,例,表

このVBAコードを実行したあと、セルの値を変更しようとすると…

protectメソッド,シートの保護,実行結果

この通り、シートの保護が設定されて、セルの値が変更できないようにすることができました!

Unprotectメソッドとは

お次はシートの保護をVBAで解除する方法のご紹介です。

シートの保護をVBAで解除するには、Unprotectメソッドを使います。

Unprotectメソッドは、シートの保護を解除するためのメソッドです。

記述方法はこちら。
Worksheetオブジェクト.Unprotect

UnprotectメソッドもProtectメソッドと同様に、Worksheetオブジェクトにはシートの保護を解除したいシートを指定してくださいね。

Unprotectメソッドでシートの保護を解除する

では、実際にUnprotectメソッドを使って、シートの保護を解除してみましょう。

Protectメソッド使ってシートの保護を設定したシートを対象に、下のコードでシートの保護を解除してみます。

この通り、シートの保護が解除されてセルの値が変更できるようになりました!

unprotect,VBA実行結果

手動でもそうですが、シートの保護は解除しても特にメッセージなどは表示されません。

セルの値が変更できるようになっていればシートの保護は解除されていますし、エクセルメニューにある「シートの保護」が緑色にハイライトされていなければ、シートの保護は解除されています。

ちなみに、手動で設定したシートの保護は、このUnprotectメソッドを使って解除することができます。

また逆に、Protectメソッドで設定したシートの保護は、エクセルのツールメニューにある「シートの保護解除」をクリックして解除することもできますよ。

最後に

いかがでしたでしょうか。

今回は、ProtectメソッドとUnprotectメソッドを使って、シートの保護、シートの解除方法についてご紹介しました。

シートの保護は手動でも設定できますが、手動だとシートの保護の設定を忘れてしまいがちです。

このシートの保護に限らず、手動での操作は私たちが考えている以上にミスをしてしまったり、処理が漏れたりしてしまうもの。

毎回設定が必要と分かっているなら、はじめからVBAで自動化してしまった方が手間が省けることと、何より確実です。

今回は単純なシートの保護と解除の方法をご紹介しました。

もちろんパスワードを使ったシートの保護の設定や、マクロだけはシート上での操作を許可する方法もありますよ。

こちらは次回以降の記事でご紹介していきます。

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

マクロだけ操作可能なシート保護の設定方法を、以下記事で紹介していますので、こちらもご覧ください。

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

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

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

The following two tabs change content below.

ノグチ

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