こんにちは、Ryoです。
Excelで扱うブックの中にはユーザーに構成などを操作されないように保護したいケースもあると思いますが、VBAでブックの保護/保護解除をパスワードを指定して処理が可能です。
今回はその方法について書いてみたいと思います。
1.サンプル概要
先ず普通に新規作成したブックを用意します。
このブックに保護を実行するサンプルコードを実行することで、以下画像の様に保護されてシート構成などが変更出来なくなります。
ブック保護のサンプルコードにはパスワードが設定されていますので、Excel上にユーザー操作で解除する場合でも、パスワード入力しない限り解除されません。
また、VBAの処理で解除することも可能なので解除用サンプルコードを実行すると以下の通り元に戻ります。
2.サンプルコード
◆ブックを保護する
Sub Sample1() ThisWorkbook.Protect Password:="lock" End Sub
ブックを保護するにはProtectメソッドを使います。
オブジェクト.Protect Password:=”パスワード” , Structure:=True又はFalse , Windows:=True 又はFalse
構文はこのような形になります。
引数Passwordには設定したいパスワードを、StructureはTrueでブック構造保護、WindowsはTrueでウィンドウ保護となりますが、サンプル通りStructureとWindowsは省略可能です。
パスワードは安直に「lock」ですが、ここは任意に変更すれば良いかと思います。
◆保護を解除する
Sub Sample2() ThisWorkbook.Unprotect Password:="lock" End Sub
保護されたブックを解除する場合はUnprotectメソッドを使います。
オブジェクト.Unprotect Password:=”パスワード”
protectに対してUnprotectですから、わかりやすいですよね。
保護する際にパスワードを指定した場合は、同様に解除する時も指定する必要があります。
このサンプルコードを実行することで、あっさり解除することが出来ます。
◆参考
保護したいブックを開いた時点で保護された状態としたい場合は、コードエディタの「ThisWorkbook」に以下の様に記述すれば、開いた時点で保護されます。
この「ThisWorkbook」のWorkbook_Open()に同様に記述します。
こうすることでブックを開いた時点で保護された状態となります。
3.まとめ
ブックの内容によっては構造を保護したいこともあると思いますので、protect/Unprotectを使うことで簡単に保護/解除を行うことが出来ます。Excel上のユーザー操作でパスワードがわかっていれば解除することも出来ますが、そこを懸念する場合はパスワードを指定する際に、Password:=”lock” & vbTabのようにタブを含めておくなどの処理も良いかと思います。
以上、ブックを保護する/保護を解除する方法についてでした!
今回の記事が何かの参考になれば幸いです。
Ryo