Excel VBA(マクロ)のパスワードはバイナリエディタで解除できる

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」となります。

検証したExcelのバージョンは

Windows 10、Excel 2010以降なら操作は同じです。また、Excelが64ビット版でも操作は同じです。xls形式のExcelの場合、少し手順が異なりますので注意してください。

対象ファイルをバックアップする

万が一に備え、操作をする前に、該当の Excel ブックはどこかにコピーをバックアップしておいてください。ファイルが破損する可能性があります。

全て自己責任において実施してください。当方では一切の責任を負いません。

7-Zipをダウンロードしてインストールする

xlsmファイルを解凍するためには、7-Zipという圧縮解凍ツールが必要です。バイナリエディタの解凍にも使うのでインストールしておきましょう。

下記のURLより最新版をダウンロードしてインストールしてください。

https://sevenzip.osdn.jp/

7-Zipをダウンロードしてインストールする

exeファイルがダウンロードされたら、ダブルクリックしてインストールするだけです。難しい操作はありません。

バイナリエディタをダウンロードする

バイナリエディタである「Stirling(スターリング)」をダウンロードします。

下記のURLより最新版をダウンロードしてインストールしてください。

https://www.vector.co.jp/soft/win95/util/se079072.html

バイナリエディタをダウンロードする

ダウンロードファイルはlzh形式で圧縮されているので、7-Zipを使って解凍します。右クリックで少し動かして離すと「stir131に展開」と出てくるので、こちらをクリックします。

Stirlingダウンロードファイルを解凍する

「stir131」フォルダ内の様子です。

stir131フォルダ内の様子

Stirling.exe」を起動しておきましょう。

xlsmファイルを7-Zipで解凍する

xlsmファイルを7-Zipで解凍します。

xls形式のVBAパスワードを解除したい方は読み飛ばしてください。

ここでは仮に「locked.xlsm」というVBAパスワードロック済のファイルを用意しました。

VBAパスワードロック済のファイル

このファイルを右クリックで少し動かして離すと、7-Zipのメニューが出てきますので、ファイル名のフォルダに展開してください。

7-Zipでファイル名のフォルダに展開する

ここでは「locked」というフォルダに展開されました。

lockedフォルダに展開された

バイナリエディタで開く

バイナリエディタ「Stirling」でファイルを開いて、パスワードを変更します。

xlsm形式

解凍されたフォルダの中に「xl」というフォルダがあるので、こちらを開きます。

vbaProject.bin」というファイルがあるので、バイナリエディタで開きます。起動している「Stirling」にドラッグ&ドロップすればOKです。

xl内のvbaProject.binをバイナリエディタで開く

xls形式

直接xls形式のファイルをバイナリエディタで開きます。起動している「Stirling」にドラッグ&ドロップすればOKです。

バイナリエディタで開いた様子

バイナリエディタ「Stirling」で開いた様子です。「なんだこりゃ?!」って驚く方もいるかと思いますが、大丈夫。次へ進んでください。

バイナリエディタStirlingで開いた様子

バイナリエディタでパスワードを探す

バイナリエディタ「Stirling」の上部メニュー「検索・移動」から「検索」を選択します。

バイナリエディタメニューの検索・移動から検索を選択する

検索データに「DPB」と入力し、データ種別に「文字列」を選択して「次検索」ボタンをクリックします。すると、下図のように検索結果が出てきます。

DPBという文字列を検索する

上図の右側の赤枠が、このブックのVBAパスワードとなります。これを「ハッシュ値」といいます。VBAパスワードのハッシュ値は、72文字、74文字、76文字、78文字の中からランダムで作成されます。

パスワードの長さを調べるには、下図のようにパスワード部分を選択します。するとフッター部にバイト数が表示されます。

パスワード部分を選択して長さを調べる

サンプルのパスワードは「76文字」ということがわかりました。

パスワードを変更する

さて、いよいよパスワードを変更しますよ。

ハッシュ値は、Excelを保存するたびに変更されます。今回は、パスワードを「xyz」とした場合のハッシュ値を、それぞれ用意しました。

下記のリンクから、ご自分の文字数にあったファイルをダウンロードしてください。

パスワード「xyz」のハッシュ値

サンプルのパスワードは「76文字」だったので、「76文字」のリンクからダウンロードしています。

ダウンロードしたファイルを「Stirling」にドラッグ&ドロップして、開いたファイルの右側(文字列側)を矢印キーやマウスを使って全選択し、右クリックから「コピー」を選択します。

ダウンロードファイルの右側(文字列側)を選択してコピーをクリックする

今度は元ファイル側に移動します。同じく右側(文字列側)を矢印キーやマウスを使って全選択し、右クリックから「貼り付け」を選択します。選択する範囲は「DPB="」から「」までの間です。

元ファイルの右側(文字列側)を選択して貼り付けをクリックする

貼り付け後、パスワード文字が一致していることを確認します。

パスワード文字が一致していることを確認する

一致していることが確認出来たら、メニューの「ファイル」から「上書き保存」を選択しておしまいです。

上書き保存する

xlsm形式

「xl」のフォルダに戻ると「vbaProject.bin.bak」が出来上がっていますが、こちらは不要なので「ゴミ箱」に入れてください。

vbaProject.bin.bakはゴミ箱へ移動する

一つ上の階層に戻り、全選択して右クリックでちょっとドラッグして離し、7-Zipのメニューから「”フォルダ名.zip” に圧縮」を選択します。

7-Zipで圧縮する

出来上がった「.zip」を「.xlsm」へ拡張子を変更します。

.zipを.xlsmへ拡張子を変更する

xls形式

「.bak」ファイルは、パスワードを変更前のファイルになります。必要に応じてバックアップしておいてください。不要ならゴミ箱へ入れてしまいましょう。

.bakファイルはゴミ箱へ移動する

VBAパスワードが解除できるか確認する

Excelを開いてパスワードが解除できるか確認します。パスワードは「xyz」です。半角小文字です。

Excelを開いてパスワードが解除できるか確認する

おおおー!解除できたー!!

パスワードが解除できた

解除できたら、忘れずにVBAプロジェクトのプロパティから「プロジェクトを表示用にロックする」のチェックを外してください。

VBAプロジェクトのプロパティからプロジェクトを表示用にロックするのチェックを外す

あとは好きなパスワードを設定するもよし、パスワードなんてこりごりな方は設定しなくてもよし、ですね。

まとめ

Excel VBA(マクロ)のパスワードをバイナリエディタで解除する方法を紹介しました。

ちょっと手順が複雑なので、作業するときには十分に注意してくださいね。特にバックアップなしでの作業はおすすめしません。また、当方では責任をもてませんので注意ください。

これに懲りたら開発者任せのパスワード管理はやめて、きっちり組織で管理していくなど、対策をしてくださいね。

おつかれさまでした。

この記事がお役に立ちましたら シェア をお願いいたします。