VBAにてソースコードを編集できないようにする、みたいな話があり、そんなことできたっけ?と思い調べてみました。
VBAのプロジェクトにパスワードを設定するを参考にしました。ありがとうございます。
備忘録としてのメモです。環境はKingsoftのWPSOfficeVer10です。VBAはバージョン6なんですね。
Windows10+Excel2010環境でも確認できました(メニュー名がVBA Projectとかになったりしますが)。
VBAでソースコードをロックする
- VBAを開く(F11)
- ツール→Projectのプロパティをクリック
- 保護タブ→プロジェクトを表示用にロックするにチェックを入れる
- パスワード、確認入力を入れてOK
- 一旦保存して閉じればOK
- マクロ有効ファイル形式のxlsmで保存をお忘れなく
動作確認としては、保存したxlsmファイルを起動して、F11でVBAエディタを立ち上げソースコードを見ようとすると、
と出ればオッケーです。
ここでパスワードを入れれば中身が見えますし、編集できます。
ちなみに、保護タブ→プロジェクト表示用にロックするにチェックを入れないと、ソースコード自体はロックがかかりません。
その場合の保護対象は、「ツール→Projectのプロパティ」をクリックした時にパスワードを聞かれるので、どうもプロパティ設定のみロックになるようです。あまり使う機会がないですが。
どんな時に使うか?
ロック自体使ったことがないのですが、ソースコード自体を改変しないようにするとか、間違えて編集すらできないようにするのはいいかもしれません。または何かしら納品時に「ソースコード改変」を条件としない場合はありかもしれません。
このあたりはイラストレーターなどでもaiファイルを納品するか、アウトプットのjpgのみにするかなどで、ソースコードは命みたいに考えると保護も当然になりそうです。このあたりは、仕事のやり方の話ですが、無駄なロックをしてパスワード忘れて大慌てみたいなものもありますしね(笑)
どちらかというと、Excel自体を保護するために、ブックの保護としてExcelファイル自体にロックするほうがまだ使う機会はありますね。
ちなみに、上のVBAソースコードをロックしても、マクロ自体の関数名は見えますし、マクロの実行は当然出来るので、本当にソースコードのロックということになります。
実際には完全に見えないわけではない
VBAの「ソースコードをロック」ではソースコードをロックできない
こちらの記事で検証されているように、ソースコードがロックされるから安心ではなさそうです。
詳細は記事を参照してもらえればと思いますが、実際は平文でコードはあるのでバイナリエディタから取り出して読み込めば戻ると。そこまでする人が限られるかどうかはおいておいて、出来てしまうので「ロックしたから安心」という認識はやめたほうが良さそうです。
※もちろんソースコードが見えないようにしてあるものを取り出す行為がどうかはここでは別問題です。技術的に見えてしまうということですね。
おわりに
VBA自体のソースコードをロックする機会はまああまりなさそうですが、知っておいて損はなさそうです。プロジェクトメニューあたりから出来ることを知っておけば逆にパスワードを入れる時も楽そうですね。
ちなみに、パスワードを忘れてしまって困ったというケースでロックを解除したい場合、Excel VBAマクロ パスワード解除方法が参考になるかもしれません。こちらでは全く試していませんが、悪用厳禁ですし、32bit環境のみのようなので、当然サイトにも書かれていますが自己責任にてどうぞとなります。
前担当者とか引き継ぎが適当になっていて、パスワードかかりまくってたら泣きそうですけどね><
世の中に無駄な知識はないの精神でいきますか。