どうしてもVBAのコードを見るためにのパスワードを解除したいときってありますよね。

今日はこちらのVBAのパスワードを解除する方法をご紹介します。
手順は少し多くなりますが、他のサイトで紹介されている小難しいコードもツールも必要ありません。
目次
まずはじめに注意事項を
あなたが今どうしてVBAのパスワードでお困りなのかは分かりません。
引継ぎでもらったVBAが怖くて実行できないから中身を見たい?
それとも自分でパスワードを付けて忘れてしまった?
それであれば問題ありません。
もし今解除しようとしているVBAが他社による製品の場合、サポート等の対象外になることも考えられます。
その辺を留意してから実行しましょう。

苦労して開いたVBAが同僚の悪口コメントで埋められていたという話もあります。
覚悟を決めましょう。

かなり特殊なシチュエーションを心配するね……。
では早速、VBAのパスワードを解除していきましょう

今回はこちらのBook1.xlsmのVBAのパスワードを解除していきます。


パスワードを解除する前に解除前のXLSMファイルはバックアップを取っておくとよいです。
まずはエクスプローラーの表示多分で「ファイル名拡張子」にチェックが入っていることを確認します
ファイル名末尾に「.xlsm」が表示されることを確認してください。
拡張子を変える

「Book1.xlsm」から「Book1.zip」へファイルの名前を変えます。


アイコンが変わったら上手く変わっていますよ。
「拡張子を変更すると、ファイルが使えなくなる可能性があります。変更しますか?」という警告が出ますが、気にせず「はい」を押下しましょう。
解凍する

右クリックをして、「すべて展開」を選びます。
展開すると「Book1(パスワードを解除したいファイルの名前)」フォルダができあがります。
フォルダ移動する

xlフォルダの中へ移動します。
「~~~.bin」という名前のファイルがあるはずです。

「~~~」の部分はマクロによって名前が変えられるので「vbaProject」という名前ではないかもしれません。
メモ帳でbinファイルを開く
ここからはメモ帳を使用します。

メモ帳を開いて、先ほどのbinファイルを投げ込みましょう。
「プログラムから開く」→メモ帳を選択
という手順でも可能です。


開いたら文字化けしているけど、大丈夫?

大丈夫です!
魔法の言葉を検索して、修正!

そうしたら、メモ帳の中で「DPB」という単語を検索します。

「ctrl+F」で検索ボックスは簡単に出せますよ!
「DPB=」から始まるコードの後ろの「”」で囲まれている文字が何文字か確認します。
その文字を以下の文字に置き換えます!
文字数 | 置き換える文字 |
---|---|
72 | 7072DC03F903F9FC0704F95EEFAE1F23DCF1D6264B81C43D3A46B2A0CA4171FB586C68D8 |
74 | 92903E759A929A92656E9B92C75639B8B64742ABD72672E12C1D5191ABE97A903C79AD4919 |
76 | CCCE601CA09FBD9FBD6043A0BDC2A3C2EB3F88D56A42E7E5A0915EFACEDC2E85DD37CC5014BC |
78 | AEAC028F0EB1F8CEF8CE0732F9CEA592E7FCD8FBBCF76D6AD82582D90B55EDA5B4546645879DF3 |

置き換えたらこんな感じになります!
DPB="7072DC03F903F9FC0704F95EEFAE1F23DCF1D6264B81C43D3A46B2A0CA4171FB586C68D8"
「”」の間が72文字だった場合はこうなります。
圧縮して、名前を変える

先ほどのBook1フォルダ直下のファイルを全て選択して、圧縮します。
そしたら完成したzipファイルを元の名前に戻します。

解除完了!……あれ?
できあがったファイルを開いてみます!

ドキドキ


パスワードが求められたよ

パスワードに「0」を打ち込んでみてください


開いた!
この隙にパスワードを解除してしまいましょう。
どうしてパスワードが変わったの?
途中で打ち込んだ文字列にヒントがあります。
DPBという場所には暗号化したパスワードを保管しています。
こちら、保存のたびに毎回変わる文字列なのですが、その情報を置き換えることで強制的にパスワードを変更しています。
途中で打ち込んだ文字列は私が予めパスワードを「0」にしたときに生成されたbinファイルから抽出した文字列です。
インターネットに接続していないパソコンで解除したいときにはこの70桁を打ち込むのではなく、ローカルにパスワードを付けたxlsmファイルを作って、binファイルからDPBの文字をコピーする、という手法も可能です。
最後に
ここまで書いてきましたが、この方法は絶対に悪用厳禁です。
こんな感じで簡単にVBAのパスワードは解除できてしまうので、会社で使用するパスワード付きのVBAに悪口を残すなど見られて困る情報を入れておくのはやめましょう。