EXCEL VBA ワークシートの保護・ワークシートの保護解除(Protect : Unprotect:ProtectContents)

 

 

EXCEL VBA ワークシートの保護・ワークシートの保護解除(Protect : Unprotect:ProtectContents)

 

 

 ●はじめに
EXCELを使用していると他人にワークシートを変更させたくない事があると思いますが、その時に使用するのが、ワークシートの保護です。EXCEL VBAでワークシートの保護を行うには、Protectメソッドを利用します。シートを保護する事で、セルの編集が出来ない状態にする事ができます。なお、シート保護を解除する場合は、Unprotectメゾットを利用します。それでは、順番に説明いたします。

 

 

 ●書式の説明  ワークシートの保護【Protectメソッド】

●オブジェクト.Protect(Password)

※ワークシートを保護します。

記述例:Worksheets(“Sheet1″).Protect:=”PassABC”

 

 

ワークシートの保護・指定したワークシートの保護設定

 

 

 ●プログラム説明 (サンプル①)

下記のサンプルプログラムは、指定したワークシートに対して、ワークシートの保護を行うサンプルプログラムです。
プログラムは、一行ですが下記の手順と同じ作業を行います。

【この手順と同じ内容が実行されます。】
①シート「機密情報」を選択します。
②シートの保護を選択
③シートの保護のパスワードを入力します。【kimitsu】
④OKボタンで確定させます。

 

 

 

●実行前~実行後 ※プログラム実行後、指定したシート「機密情報」のワークシートにパスワード保護を設定しました。

(画面クリックして拡大)

 

 

指定したワークシートのみワークシートの保護を行う

 

 

 ●プログラム説明 (サンプル②)
下記のサンプルプログラムは、指定したワークシートのみ保護を行うサンプルプログラムです。
【3つのワークシートが有ります】下記の通りに、ワークシートの保護を行います。
1・・シート名【一般情報】・・・保護なし
2・・シート名【機密情報】・・・ワークシートの保護 パスワード【kimitsu】
3・・シート名【個人情報】・・・ワークシートの保護 パスワード【kojin】

 

 

 

 ●実行前~実行後 ※プログラム実行後、3つのワークシートのうちシート「機密情報」と「個人情報」の2つのシートの保護を設定されました。
(画面クリックして拡大)

 

 

全てのワークシートに対してワークシートの保護・同じパスワードで保護設定を行う

 

 

 ●プログラム説明 (サンプル③)

下記のサンプルプログラムは、全てのワークシートに対してワークシートの保護・各シートごとにパスワードので保護設定を行う。(ループ設定)

【全てのワークシートに対して、各シートごとにパスワードを設定してシート保護を行う。】

1・・シート名【一般情報】・・・ワークシートの保護 パスワード【ABC】
2・・シート名【機密情報】・・・ワークシートの保護 パスワード【123】
3・・シート名【個人情報】・・・ワークシートの保護 パスワード【あいう】

 

 

 

  ●実行前~実行後 ※プログラム実行後、全てのシートに対して、順番にシート保護(パスワード)設定を行いました。ワークシートの保護を行いますと、シートの文字入力等が出来なくなりました。
(画面クリックして拡大)

 

 

指定したワークシート名に対して保護パスワードを設定します。

 

 

 ●プログラム説明 (サンプル④)

下記のサンプルプログラムは、指定したワークシート名に対してワークシートの保護パスワードを設定します。

【指定したワークシート名に対して保護設定:条件】
①・・・ワークシート名に「機密情報」が含まれるワークシートは、パスワードを「kimitsu」に設定
②・・・ワークシート名に「個人情報」が含まれるワークシートは、パスワードを「kojin」に設定
③・・・それ以外にワークシートが有る場合は、何もしない「ワークシートの保護なし」

 

 

 

 

  ●実行前~実行後 ※プログラム実行後、指定したワークシート名に対して、ワークシートの保護を設定しました。
(画面クリックして拡大)

 

 ●書式の説明  ワークシートの保護を解除【UnProtectメソッド】

●オブジェクト.UnProtect(Password)

※ワークシートを保護を解除します。

記述例:Worksheets(“Sheet1″).UnProtect:=”PassABC”

 

 

ワークシートの解除・指定したワークシートの保護の解除

 

 

 ●プログラム説明 (サンプル①)

下記のサンプルプログラムは、指定したワークシートの保護を解除するサンプルプログラムです。既にワークシートの保護を行っているワークシート「機密情報」の保護を解除します。

【注意】:ワークシート保護パスワードは、「kimitsu」保護されている条件で下記のプログラムを実行します。

 

 

 

●実行前~実行後 ※プログラム実行後、指定したワークシート「機密情報」の保護を解除されました。

※ワークシート名「機密情報」⇒ 解除パスワード「kimitsu」で解除されました。

【注意】:ワークシートに対して保護パスワードと解除パスワードが異なる時は、下記の実行時エラー’1004’が発生します。このエラー回避方法については、次のサンプル②で説明いたします。

 

 

ワークシートの解除・指定したワークシートの保護の解除(実行時エラー回避)

 

 

 ●プログラム説明 (サンプル②)

下記のサンプルプログラムは、指定したワークシートの保護を解除するサンプルプログラムです。既にワークシートの保護を行っているワークシート「機密情報」の保護を解除を解除します。今回のサンプルプログラムは、ワークシートの保護を解除する際に、解除パスワードを聞いてきますが、異なるパスワードを入力すると、実行時エラーが発生するのでエラーを回避する仕組みもプログラムに追記しています。

 

 

 

 

 ●実行前~実行後 ※プログラム実行後、シート解除のパスワードを入力する画面が表示されます。入力したパスワードが間違えている場合は、間違えているメッセージを表示します。入力したパスワードが一致している場合は、ワークシートの保護が解除されます。
(画面クリックして拡大)

 

 

指定したワークシート名に対して保護パスワードを解除します。

 

 

 ●プログラム説明 (サンプル③)

下記のサンプルプログラムは、指定したワークシート名に対してワークシートの保護パスワードを設定します。

【指定したワークシート名に対して保護を解除:条件】
①・・ワークシート名に「個人情報」が含まれるシートは、パスワード「kojin」で解除する。
②・・ワークシート名に「機密情報」が含まれるシートは、パスワード「kimitsu」で解除する。
③・・その他のワークシートが有る場合は、何もしません。

 

 

 

  ●実行前~実行後 ※プログラム実行後、指定したワークシート名に対して保護を解除します。
シートの解除条件:シート名に「個人情報」と「機密情報」が含まれるシートの保護を解除されました。

 

 

 ワークシートが保護されているか確認する。(確認方法)

 

 

 ●プログラム説明 (サンプル①) ProtectContents

下記のサンプルプログラムは、ワークシートの保護状態を確認するサンプルプログラムです。今回のプログラムは、ワークシート「機密情報」のシートが保護されているか確認します。

 

 

●実行前~実行後 ※プログラム実行後、ワークシート「機密情報」の保護状態を確認します。
①保護されている場合は、「True」
②保護されていない場合は、「False」
(画面クリックして拡大)

 

 

全てのワークシートが保護されているか確認する。

 

 

 ●プログラム説明 (サンプル②) ProtectContents

下記のサンプルプログラムは、ブックにあるすべてのワークシートの保護状態を確認するサンプルプログラムです。ワークシートを一つずつワークシートの保護状態を確認して、保護状態をメッセージボックで表示させます。

 

 

 

 

 ●実行前~実行後 ※プログラム実行後、全てのワークシートが保護されているか確認して、メッセージボックスでワークシートの保護状態が表示されました。
(画面クリックして拡大)

 

 

 

最後まで、ご覧いただきまして誠に有難うございました。
また、VBAに関するテクニックや便利な手法などをこのサイトに掲載していきますので、定期的に参照していただけると幸いです。