Excel VBA(マクロ)のパスワードはバイナリエディタで解除できる
Excel VBA(マクロ)のパスワードはバイナリエディタで解除できます。
VBAProjectのパスワードは、プログラムの解析を保護するために設定することができます。ところが、設定したパスワードを忘れてしまうと、コードを見ることも変更することもできなくなってしまいます。
VBAパスワードの解除方法については、以前「Excel VBA マクロ パスワードを解除する方法」でも紹介しました。
しかし、この方法では解除できないケースがあり、その記事のコメントから解決方法を教えていただいたので、検証を含めて本記事にまとめることにしました。
具体的には「バイナリエディタ」を使ってパスワードを解除する方法となります。「バイナリエディタってなによ?」って思われる方もいると思います。こちらの説明は後述しますね。
ここでは Excel VBA(マクロ)のパスワードをバイナリエディタで解除する方法 を紹介します。
目次
本記事でできること
バイナリエディタを使って、VBAProjectパスワードを解除することができます。正確には「別のパスワードに置換して解除させる」といった方法となります。
xlsm形式のVBAパスワード解除の手順を簡単に説明します。
- 対象ファイルをバックアップする。
- 7-Zipをダウンロードしてインストールする。
- バイナリエディタをダウンロードする。
- xlsmファイルを7-Zipで解凍する。
- vbaProject.binをバイナリエディタで開いてパスワードを変更する。
- 圧縮してxlsmファイルに戻す。
- Excelを開いてパスワードを解除する。
今回の方法では、パスワードを解除してソースコードを確認することはできますが、パスワードがなんだったのかは把握できません。
また、事前に「ファイル拡張子」を表示する設定をしておいてください。
手順が複雑なので、必ずバックアップをとってから作業をしてください。
検証したExcelのバージョン
VBAProject パスワードの解除について、検証したOSはWindows 11です。Excelのバージョンは、Excel 2021 32ビット版で検証しています。ファイル形式は「xlsm」となります。
Windows 10、Excel 2010以降なら操作は同じです。また、Excelが64ビット版でも操作は同じです。xls形式のExcelの場合、少し手順が異なりますので注意してください。
対象ファイルをバックアップする
万が一に備え、操作をする前に、該当の Excel ブックはどこかにコピーをバックアップしておいてください。ファイルが破損する可能性があります。
全て自己責任において実施してください。当方では一切の責任を負いません。
7-Zipをダウンロードしてインストールする
xlsmファイルを解凍するためには、7-Zipという圧縮解凍ツールが必要です。バイナリエディタの解凍にも使うのでインストールしておきましょう。
下記のURLより最新版をダウンロードしてインストールしてください。
exeファイルがダウンロードされたら、ダブルクリックしてインストールするだけです。難しい操作はありません。
バイナリエディタをダウンロードする
バイナリエディタである「Stirling(スターリング)」をダウンロードします。
下記のURLより最新版をダウンロードしてインストールしてください。
https://www.vector.co.jp/soft/win95/util/se079072.html
ダウンロードファイルはlzh形式で圧縮されているので、7-Zipを使って解凍します。右クリックで少し動かして離すと「stir131に展開」と出てくるので、こちらをクリックします。
「stir131」フォルダ内の様子です。
「Stirling.exe」を起動しておきましょう。
xlsmファイルを7-Zipで解凍する
xlsmファイルを7-Zipで解凍します。
xls形式のVBAパスワードを解除したい方は読み飛ばしてください。
ここでは仮に「locked.xlsm」というVBAパスワードロック済のファイルを用意しました。
このファイルを右クリックで少し動かして離すと、7-Zipのメニューが出てきますので、ファイル名のフォルダに展開してください。
ここでは「locked」というフォルダに展開されました。
バイナリエディタで開く
バイナリエディタ「Stirling」でファイルを開いて、パスワードを変更します。
xlsm形式
解凍されたフォルダの中に「xl」というフォルダがあるので、こちらを開きます。
「vbaProject.bin」というファイルがあるので、バイナリエディタで開きます。起動している「Stirling」にドラッグ&ドロップすればOKです。
xls形式
直接xls形式のファイルをバイナリエディタで開きます。起動している「Stirling」にドラッグ&ドロップすればOKです。
バイナリエディタで開いた様子
バイナリエディタ「Stirling」で開いた様子です。「なんだこりゃ?!」って驚く方もいるかと思いますが、大丈夫。次へ進んでください。
バイナリエディタでパスワードを探す
バイナリエディタ「Stirling」の上部メニュー「検索・移動」から「検索」を選択します。
検索データに「DPB」と入力し、データ種別に「文字列」を選択して「次検索」ボタンをクリックします。すると、下図のように検索結果が出てきます。
上図の右側の赤枠が、このブックのVBAパスワードとなります。これを「ハッシュ値」といいます。VBAパスワードのハッシュ値は、72文字、74文字、76文字、78文字の中からランダムで作成されます。
パスワードの長さを調べるには、下図のようにパスワード部分を選択します。するとフッター部にバイト数が表示されます。サンプルのパスワードは「76文字」ということがわかりました。
パスワードを変更する
さて、いよいよパスワードを変更しますよ。
ハッシュ値は、Excelを保存するたびに変更されます。今回は、パスワードを「xyz」とした場合のハッシュ値を、それぞれ用意しました。
下記のリンクから、ご自分の文字数にあったファイルをダウンロードしてください。
パスワード「xyz」のハッシュ値
- 72文字:5052FCE319E3191CE7E4195EA06F5A4AC44F8F6D23359185D29AFD45A25338ECB9EE844A
- 74文字:CAC866CE3DEB3DEBC2153EEB80DE4D98748211412FFDF7B7C32858571B1825B6BE3FDC0238
- 76文字:1416B8E8C80FE50FE5F01B10E5B2D4938EAE982B7B4937E9EDD176561919DE277CB805A278FE
- 78文字:BEBC129FFE61E87EE87E1782E97E554D70094B134EFE6CB234608483990C44D35C4BF5CAE5B541
サンプルのパスワードは「76文字」だったので、「76文字」のリンクからダウンロードしています。
ダウンロードしたファイルを「Stirling」にドラッグ&ドロップして、開いたファイルの右側(文字列側)を矢印キーやマウスを使って全選択し、右クリックから「コピー」を選択します。
今度は元ファイル側に移動します。同じく右側(文字列側)を矢印キーやマウスを使って全選択し、右クリックから「貼り付け」を選択します。選択する範囲は「DPB="」から「”」までの間です。
貼り付け後、パスワード文字が一致していることを確認します。
一致していることが確認出来たら、メニューの「ファイル」から「上書き保存」を選択しておしまいです。
xlsm形式
「xl」のフォルダに戻ると「vbaProject.bin.bak」が出来上がっていますが、こちらは不要なので「ゴミ箱」に入れてください。
一つ上の階層に戻り、全選択して右クリックでちょっとドラッグして離し、7-Zipのメニューから「”フォルダ名.zip” に圧縮」を選択します。
出来上がった「.zip」を「.xlsm」へ拡張子を変更します。
xls形式
「.bak」ファイルは、パスワードを変更前のファイルになります。必要に応じてバックアップしておいてください。不要ならゴミ箱へ入れてしまいましょう。
VBAパスワードが解除できるか確認する
Excelを開いてパスワードが解除できるか確認します。パスワードは「xyz」です。半角小文字です。
おおおー!解除できたー!!
解除できたら、忘れずにVBAプロジェクトのプロパティから「プロジェクトを表示用にロックする」のチェックを外してください。
あとは好きなパスワードを設定するもよし、パスワードなんてこりごりな方は設定しなくてもよし、ですね。
まとめ
Excel VBA(マクロ)のパスワードをバイナリエディタで解除する方法を紹介しました。
ちょっと手順が複雑なので、作業するときには十分に注意してくださいね。特にバックアップなしでの作業はおすすめしません。また、当方では責任をもてませんので注意ください。
これに懲りたら開発者任せのパスワード管理はやめて、きっちり組織で管理していくなど、対策をしてくださいね。
おつかれさまでした。