エクセルで作成したツールを配布するにあたり、できればVBAのマクロのソースは、見えないようにプロテクトしておきたいなーと思って、
いろいろ調べたんですが、意外に、ソリューションが少なかったです。
昔は使えていたけど、OfficeやWindowsのバージョンが上がって使えなくなっているものもたくさんあったので。。
エクセルなどのVBAソースを保護(プロテクト)するには、VBAのプロジェクトにデフォルトでついている機能で、パスワードで保護する方法もありますが、いろんなサイトで、そのパスワードを解除する方法が出回っているので、その方法だと、簡単に解除できてしまいます。
そのため、それ以外の方法をあちこち調べて、ようやく使える方法を2つばかり見つけたので、メモしておきます。
実際のソリューションに移る前に、そもそもVBAのソースを見えないように保護するには、デフォルトとは別の解除が難しい方法でロックをかける方法と、たとえソースを見れる状態にされたとしても人が読んで分からないように、変数名を変更したりインデントを無くしたりする難読化(Obfuscator)という方法があります。
フリーでなんとかする場合
excel-pratiqueというサイトのサービスを使う。
この方法は、最初のは無料のWebサービスを使う方法です。
自分でVBAのソースをコピペーして、変換すると、難読化されたソースが生成されるので、それをまた、VBAのプロジェクトに戻すという方法です。
オリジナルのエクセルファイルを残しておかないと、ソースの修正がしづらいので、ソースを修正する場合は、オリジナルのソースを修正してから、リリース用のエクセルに、難読化したソースを戻すといったような2重管理が大変です。
ただ、無料で使えるサービスなので、それほど頻繁に使わない場合はこちらでもいいと思います。
難読化&プロジェクトをパスワードでロック
いろいろフリーのソフトを探したのですが、いいものは見つけられませんでした。
そのため、私は、こちらの有料のソフトを購入しました。
Windowsの64bitでも、比較的新しいOfficeでも使用できるソフトは、この「VBASH」が一番だと思います。
このソフトは、エクセルやワードなどのVBAマクロのプロジェクトをパスワードでロックできます。
Officeにデフォルトでついているパスワードロックとは異なりますので、一般にネットに出回っている方法では解除できないので、安心度が上がります。
また、難読化も可能で、「パスワードロック」、「難読化」、「その両方」といったように、プロテクトの方法も選べます。
やり方も、VBASHで、対象のファイルを開いて、プロテクトの方法を選択してボタンを押すだけですし、元ファイルは残ったままで、処理後のファイルができますので、ファイル管理の手間も少なくなります。
そのため、定常的にプロテクト→リリース(配布)という作業がある場合は、このソフトを使った方がいいと思います。
ただ、私の場合は、難読化も行うと難読化しすぎて?うまく動かなくなったので、ロックだけを使っています。
実際に使う際は、上記ソフトのサイトにお試し用のデモ版ソフトが置いてあるので、自分の環境できちんと使えるを確認してからこうした方がいいと思います。