VBAProjectのロックについて

f:id:gyokusen_since:20190208143237p:plain

手作業でロックは実現できたけど結局プログラムで実現することにした。

ところがなかなかハードルが高かった!

1.圧縮ツールのdllを登録するのに嵌った。現在のPCは殆ど64ビットOSだと思うが圧縮ツールのDLLは32ビットである。そのため登録するには%systemroot%\syswow64配下にコピーする必要がある。それを知らずに%systemroot\system32配下にコピーしたところうんともすんとも動かないどころかdllが見当たらないとか言って怒られてしまう・・・

2.バイナリファイルの編集をVBAでやる場合に今まで普通のテキストファイルしか扱ったことなかったからグーグル先生にお尋ねしまくりで実現まで結構苦労した。相変わらず配列が0オリジンでUBOUNDが配列の添え字の最大値だという認識がなかったので怒られたりした。

3.VBAのプロジェクトだけロックを掛けるためにはエクセルのたまたまの動作に依存しておりちょっと条件が違うだけでうまくかからないという難問だった。

4.アーカイブのdllが自宅のノートPCではなぜか見つからないという状態に陥り結局7za.exeという単体で動くプログラムを利用して圧縮・解凍をかけることにした。圧縮解凍のコマンドは良く調べないと解凍してもさらにフォルダがある状態になっていてちょっと嵌った。

★このプロテクト方法は手品に近いことをやる必要があり余り公開したくない・・・ 

 よってVBAProjectのロックを掛けるマクロ自身もロックを掛けた形で公開します。

項番3の部分がロック解除の調査からの試行錯誤で発見したものであり興味があるのならちょっと挑戦しても面白いかなと思います。

2020年7月27日現在下記のURLは閉鎖されており入手できなくなってました。もともととらとらうぃっきーの作者がお試し用に開放されていたスペースなので作者の契約切れとともに私のサイトは消滅してしまいました。

http://gyokusen.space.toratorawiki.net/?%E8%A9%A6%E9%A8%93%E7%9A%84%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89/%E6%9C%80%E5%BC%B7VBA%E3%83%97%E3%83%AD%E3%83%86%E3%82%AF%E3%83%88.zip&action=raw

もしどうしても欲しいという方がいたら別の方法で提供予定です。