マクロのパスワードを忘れたときの対処方法
何度言ってもセルを消したり、操作がわからないと人を呼びつける、バカ上司というのはどこにでもいるものだ。
いちいち呼ばれるのがうっとおしいので、マクロを書いて触られないようにパスワードロックしておく。
操作の内容が少し変わって手直しをする時、「 あ゛ 」 パスワードなんだったっけ?(汗
まるで、「電車の中で急に腹痛になったような心境」を、涼しい顔で乗り切る方法をメモ。
例えば、社内のシステムなどでは、エンドユーザが勝手にマクロを変更しないようにしたい場合や、開発中のソースの流出防止、
その他にも何らかの理由でソースを表に出したくない場合など、マクロをパスワードでロックするケースがは結構ある。
しかし、パスワードを忘れてしまったり、設定時の誤入力に気づかずわからなくなったり、最初に作った人が会社を辞めちゃったりなど、パスワードが分からなくなったという事故が起きると、他人どころか自分もアタフタする羽目にあう。
バグが出ても直せないし、下手をすると一から作り直し… むらぁぁぁぁ!
パスワードを思いつく限りやっても無理な場合には以下の方法で復旧だ。
まずは、作業に入る前に、バイナリエディタを準備。 バイナリエディタなら何でも良い。
個人的には、「Stirling」が好きかな。
◆http://www.vector.co.jp/soft/win95/util/se079072.html
作業には、必ずワークブックのバックアップを取っておくことをお勧めする。 誤って破損すると、完全に復旧出来なくなる。
バイナリエディタを準備したら、次はマクロにパスワードが設定されているワークブックをバイナリエディタで開いてみよう。
わけがわからないだろうが、これがワークブック本来の姿である。
ここでは、悩まずこんなものなんだとスルー。
次は、パスワードが書いてある場所である DPB= という文字列を検索。
この DBP= という文字列の後に " " で挟まれた文字列がパスワードの記載部分。
ただし、スクランブルがかかっているのでこの状態では何が何だかわからないだろう。
ではどうするかというと、スクランブルされたパスワードの文字列を新たに作り、この部分を作った文字列で置き換えるのである。
つまり、構造的にパスワードの部分だけをごっそり入れ替えてしまうというわけだ。
鍵が合わないなら、鍵の合う錠前に変えればいいという発想だ。
これが可能な理由は、マクロのパスワードの構造上の特性があるからである。
基本的に、マクロのパスワード文字列の長さは、たいての場合 「72文字」 「74文字」 「76文字」 「78文字」 になっている。
では、差し替えるスクランブルされたパスワードの文字列をつくってみよう。
実際にはどうするかというと、エクセルでワークブックを新規作成し、マクロのパスワードを設定して保存。
その後、バイナリエディタでそのワークブックを開き、入っている DPB= 以降の部分を使う。
尚、パスワードの長さは、保存するたびに72文字、74文字、76文字、78文字のいずれかが設定されるので、希望の長さになっていなかったら、ワークブックを再度保存した後バイナリエディタで確認の手順を、希望の長さが出るまで繰り返せばよい。
まずはワークブックを新規作成し、図のようにOption Explicitだけ入力。
ここで設定するのは、「1」とか「a」とか「b」とか何でもおk。
パスワードを設定したら、ワークブックを保存。
尚、ここでは「a」を設定している。
次に、保存したワークブックをバイナリエディタで開き DPB= の所を確認。
図では左が72文字のデータ、右が74文字のデータであることがわかる。
左を例に言えば、パスワード「a」は 72文字のパスワードであり 「A8AA044~」が差し替える文字列ということになる。
これが、キーになる。 事前に、幾つかのパスワードと、差し替えるコードが何かをメモしておくと後で楽だろう。
(例) 「a」 72文字 A8AA044~」 「b」 74文字 A6AB014~」 等
差し替える文字列(パスワード)が出来たら、最後にそれを目的のワークブックの同じ部分にコピペ。
もちろん、コピペはバイナリエディタ上で行うように。
文字列を貼り付けしたら忘れずに保存し、バイナリエディタを閉じれば完了。
その後、エクセルで目的のワークブックを開き、マクロのパスワードを聞かれたら差し替えたパスワードを作ったときに入れたパスワードを入力。
これで、禿げずにすみますな。
くれぐれも、パスワードロックされた配布マクロを弄るのはやめましょう。(お約束
参考ツール







