今回は、VBAの暗証番号付きの保護を強制的に解除する方法についてのお話です。
VBAには、ソースコード(以降コード)を他人に勝手に変更されないようにするために暗証番号を設定してコードを保護する仕組みがあるんです。
ところが、保護した暗証番号を何らかの理由で忘れてしまうというケースがあるんですよね。
そうなると、コードを見ることも変更することもできないので、修正や改良も出来なくなってしまうということになっちゃうんです。
そこで、以前VBAの保護のロックを強制的に解除する方法を紹介しました。
それでも、開けないファイルがあるのでどうにかならないか? との質問を頂き検証した結果。
一つの方法を見つけることが出来たのでその方法を紹介しちゃいます。
但し、VBAの保護を解除出来たら、パスワードはフリーソフトなどでしっかり管理しましょう。
それでは、早速本編へ行ってみよう!!
①今回の方法は悪用厳禁です
②VBAの保護が必ず解除できる訳ではありません
③ファイルが壊れる可能性があるのでバックアップは必ずとって下さい
④作業の結果は自己責任となります
目次を使って読みたい項目へ
古いExcelはパスワードを任意の数字に変えよう
今回の方法は、VBAの保護パスワードを任意のパスワードに書き換えることで保護を解除するという方法です。
前提として以前こんな質問をもらいました。
古いExcel(.xls)を最新版のファイル形式(.xlsm)で保存し直して、VBAの保護のロックを強制的に解除する方法を試したが上手くいかないので他に方法はないか?
というものでした。
確かに上手くいかないようなので、VBA以外の方法でパスワードを書き換える方法が無いのか調べた結果、一つの可能性があることが分かったんです。
その方法とは、バイナリエディタを使ってパスワードを任意の数字に書き換えてしまうという方法です。
とは言っても分かりづらいので、手順を追ってやり方を解説しますね。
バイナリエディタをダウンロードしよう
まず、保護パスワードを変更するためにバイナリエディタをダウンロードしましょう。
今回使うのは、Stirling(スターリング)というフリーソフトです。
ちなみにバイナリエディタとは
バイナリエディタとは、任意の形式のバイナリファイルの内容を読み込んで表示し、編集することができるソフトウェア。データを16進数(hexadecimal)の数値列として表示する方式が一般的なため、英語では “hex editor” と呼ばれる。
IT用語辞典e-words様より引用
つまり、プログラムの内容を「01000111」といったようなコンピュータ言語としてソフトなどの中身を見ることが出来るエディタということです。
エディタとは、編集するためのソフトのことを言います。
要は、「プログラム編集用ソフト」のことを「バイナリエディタ」と呼ぶということですね。
では、「Stirling」のインストール方法を説明します。
①ベクターのサイトからソフトをダウンロードします。
『ダウンロードはこちら』ボタンをクリックしましょう。
②『ダウンロードページへ』ボタンをクリックしましょう。
③『このソフトを今すぐダウンロード』ボタンをクリックしましょう
④ダウンロードされた『stir131.lzh』ファイルを解凍しましょう。
⑤「stirling.exe」ファイルをダブルクリックしましょう。
⑥起動できれば、ひとまずOKです。
これで一つ目の準備ができました。
本ソフトは、最終更新日が1999年で「Windows95」までが動作保証されていますが、私の環境(Windows10)でも問題なく動作することを確認しています。
Officeも最新版で作業していますが、特に問題はありませんでした。(2020年7月現在)
次は、「キーボードシミュレータ」というフリーソフトをダウンロードしていきましょう。
キーボードシミュレータをダウンロードしよう
さっそく、キーボードシミュレータをダウンロードしましょう。
キーボードシミュレータは、クリップボード機能に対応していないソフトでも文字を貼り付けてくれる機能を持ったソフトです。
stirlingもクリップボード機能に対応していないので必要になります。
クリップボード機能とは、簡単に言うとコピペ機能の事です。
今回の作業は、VBAのパスワードを「1234」に置き換えてその番号でVBAコードを見られる形にします。
その後に改めてパスワードを設定するという手順になるので、前もってダウンロードしておきましょう。
①【ダウンロードはこちら】ボタンをクリックします。
②【ダウンロードページへ】ボタンをクリックします。
③【このソフトを今すぐダウンロード】ボタンをクリックします。
④「autokeybn146_setup.exe.zip」ファイルを解凍します。
⑤「autokeybn146_setup.exe」をダブルクリックします。
⑥「OK」ボタンをクリックします。
⑦「次へ」ボタンをクリックします。
⑧「次へ」ボタンをクリックします。
⑨「インストール」ボタンをクリックします。
⑩「完了」ボタンをクリックします。
⑪ソフトが起動したら準備完了です。
これで準備出来たのでいよいよ本番の作業に移りましょう。
前もって対象ファイルのバックアップなどをとっておきましょうね。
パスワードを「1234」に変更しよう
それじゃあ、早速暗証番号を「1234」に変更していきましょう。
①サンプルとして、このファイルのロックを外します。パスワードは「0000」としています。
②「Stirling」を起動して開くボタンをクリックします。
③目的のファイルを選んで「開く」ボタンをクリックします。
④検索ボタン(双眼鏡マーク)ボタンを押します。
検索データに「DPB」と入力して「次検索」をクリックします。
⑤「DPB」の「=””」内の文字がパスワードに関わる文字です。
⑥「=””」内の文字を選択すると、ソフトの左下に(78)と表示されるのでその数字を確認しましょう。
この数字に合った「文字列」を入力する必要があります。
この数字は、4パターンありランダムに決まるそうなので、下の該当する文字をコピーしておきましょう。
今回の場合は、「78文字」の文字列をコピペする形になります。
パスワード「1234」
72文字 6062CC13E913E9EC1714E94DB4B5BB69EAA21E41EBFCFC944A99D12883ECB411D5C4C725
74文字 6260CE844BA14BA1B45F4CA1150CFD13A1426AB619731444BC027169003BC46CF98D2C3F8D
76文字 959739565B76787678898877782825EE08AE357FA52C620973A13594A42DFC132D2E4EE37E44
78文字 0E0CA28EEEF2390F390FC6F13A0F679EAF816FACBCDC6B29C63A6E0CC7935ECD22FE5F1FB29113
bariHack様より引用
コピーした「文字列」を「キーボードシミュレータ」に貼り付ける必要があるので、予め「キーボードシミュレータ」を起動しておきましょう。
⑦最上部の空白に「文字列」を貼り付け、「[入力開始] ボタンを押下後」の数字を「15」に変更しましょう。準備ができたら「入力開始」ボタンを押しましょう。
※入力開始時間を変更する理由は、Stirlingをクリックして文字選択する時間と入力モードの変更時間が必要なので時間を長くしています。
貼り付けをする時は、「Stirling」をクリック→「Insertキー」を押して入力モードに変更→上書きしたい範囲を選択
ここまでを落ち着いて15秒以内に作業する必要があります。
私も失敗するので何度か練習してみましょう。失敗したら保存せずにやり直せばOKです。
⑧書き換える文字を15秒以内に選択します。15秒後に自動で文字を入力してくれます。
①文字列の選択は、「””」を含まないようにしましょう
②文字入力モードが上書きになっているので、「Insert」キーを押して入力モードにしておきましょう
③差し替えに失敗したら、保存せずに閉じて落ち着いて作業をやり直しましょう
⑨無事書き換えが出来たら、上書き保存して「Stirling」を閉じましょう。
⑩VBEの画面からパスワードを「1234」と入力して「OK」ボタンをクリックしましょう。
VBAコードが見られれば、成功です。
⑪パスワードを変更か削除をして「OK」をクリック。上書き保存して終了しましょう。
これで無事パスワードの解除は終わりです。
お疲れさまでした。
まとめ
さて、どうですか? 解除は出来たでしょうか?
VBAの保護を外すための方法の2つ目の紹介でした。
準備するものや手順が多いので少し大変ですが、1つ目のやり方が上手くいかない時は試してみて下さいね。
それでは、また次回お会いしましょう。
ばいばーい!!!!
おかげさまでした。
キーボードシミュレータを使わずともコピペで可能です。
パスワード「1234」の4パターン、引用されているものをテキストファイルに保存。
テキストファイルをStirlingで開くと、該当部分をコピペ出来ます。
テキストファイルとバイナリエディタを並べた、スクリーンショット(pngファイル)です。
興味があれば下記URLからDLしてみてください。
https://d.kuku.lu/15c3a4c8b
seega_hir さん
今回はご連絡いただきありがとうございます
もっとシンプルな方法でパスワード解除のテキストをコピペできるというお話ですね
大変参考になりました
ご指摘頂いた内容を基に確認させていただきます
ご協力頂きありがとうございました