頑張らないために頑張る

ゆるく頑張ります

パスワード保護されたAccessのVBAコードの保護を解除する方法

Posted at — May 16, 2025

概要

VBAコードがパスワードで保護されたMDBファイルを保守しなければならない、だが前任者が退職しておりパスワードがわからない・・・というケースは往々にして存在します。このような場合にVBAコードの保護を解除する方法について、解除できる可能性が高いと考えられる順に、いくつかの方法を検討してみます。

免責事項

ここに記載した情報は、あくまで技術的な可能性に関するものであり、特定の方法の成功を保証するものではありません。また、これらの方法の実行によって生じたいかなる損害についても責任を負いかねます。パスワード解除ツールの使用やファイルの直接編集などは、ご自身の責任と判断において、関連する法律や倫理規定を遵守の上、慎重に行ってください。

重要な前提

パスワード解除の方法

サードパーティ製 VBAパスワード解除・回復ツール

先ほど、「こういうケースは往々にして存在する」と述べたとおり需要は多いのでしょう、インターネット上にはVBAのパスワード解除をうたったツールが多数存在します。これらは、Access VBAのパスワードを解除したり、回復したりすることを目的とした専用のサードパーティ製ソフトウェア(有償・無償あり)です。これらのツールは、AccessのVBAパスワード保護メカニズムの既知の弱点や特定のアルゴリズムを解析して作られていることが多く、比較的高い成功率が期待できます。前任者が設定したパスワードの複雑さやAccessのバージョンにもよりますが、多くの場合、最も手軽かつ成功の可能性が高い方法と言えます。

一般的な動作原理

ツールによって異なりますが、一般的には以下のようなアプローチを取るようです。

手順

  1. 信頼できるVBAパスワード解除/回復ツールを選定し、入手します。
  2. ツールをPCにインストールまたは実行します。
  3. ツールに対象のMDBファイル(コピー)を指定します。
  4. ツールの指示に従って、パスワード解除または回復処理を実行します。
  5. 処理後、MDBファイルを開き、VBAエディタ(Alt + F11)でコードにアクセスできるか確認します。

セキュリティ上の注意点

データベースファイルのバイナリ編集

この方法は、MDBファイルをバイナリエディタ(Hexエディタとも呼ばれます)で直接開き、VBAプロジェクトのパスワードが格納されている特定の部分を書き換えることで、パスワード保護を無効化しようとするものです。Accessのファイル構造やVBAパスワードが格納される仕組みに関する知識があれば、直接的なアプローチとして成功する可能性があります。しかし、高度な知識と細心の注意が必要です。

手順

  1. 信頼できるバイナリエディタを入手します。
  2. 対象のMDBファイル(コピー)をバイナリエディタで開きます。
  3. VBAプロジェクトのパスワードに関連する特定のバイトパターンやオフセットを探し出し、それを無効な値や既知の値に書き換えます。(この特定箇所を見つける情報は、インターネット上の技術フォーラムなどで共有されている場合がありますが、Accessのバージョンによって異なることがあります。)
  4. 変更を保存し、MDBファイルを開いてVBAコードにアクセスできるか確認します。

セキュリティ上の注意点

VBAコード抽出ツール

これらのツールは、必ずしもパスワードを「解除」するわけではなく、MDBファイルからVBAコードのテキスト部分を「抽出」することを試みます。パスワードによってVBAプロジェクトへのアクセスがブロックされていても、コードデータ自体はファイル内に特定の方法で格納されているため、それをサルベージしようとするアプローチです。抽出に成功すれば、パスワード解除の手間なしでコードの内容を確認したり、新しいMDBファイルに再実装したりできる可能性があります。

手順

  1. VBAコード抽出ツールを選定し、入手します。
  2. ツールに対象のMDBファイル(コピー)を指定します。
  3. ツールを実行し、VBAコードの抽出を試みます。
  4. 抽出されたコード(通常はテキストファイルなどに出力される)の内容を確認します。

セキュリティ上の注意点

推測可能なパスワードの試行

もしコードの保護に用いるパスワードについて、前任者がたとえば「0000」のように非常に単純な文字列だったり、会社名、プロジェクト名など、推測しやすいものを設定していた場合に限り、成功する可能性がある方法です。つまり、正解に行きつくまで思い当たる選択肢すべてを試行する「総当たり」的な方法です。

alt text

つまり、上記のパスワード欄に何らかの文字を入力してはOKを押すことを、トライアンドエラーで繰り返すことになるわけです。

シンプルで技術的な知識を必要とせず、ハマるとコストが少なくて済む方法です。VBAプロジェクトのパスワードは、ログオンパスワードほど複雑さを要求されないため、たまに簡単で安易なものが使われていることもあります。また、「3回連続でパスワードを間違えると、一定時間は入力できなくなる」というようなペナルティも存在しません。そのため、意外とこの方法も捨てたものではありません。

手順

  1. VBAエディタを開こうとすると表示されるパスワード入力ダイアログで、思いつく限りのパスワード候補を入力してみます。
  2. 候補としては、以下のようなものが考えられます。
    • 一般的な単語(例:”password”, “access”, “vba”, “test”)
    • 会社名、部署名、プロジェクト名(またはその略称や関連語)
    • 前任者の名前、イニシャル、社員番号、内線番号など(もし分かれば)
    • 数字の連続(例:”1234”, “0000”)
    • 何も入力せずにOKを押す(パスワードが空の場合)

セキュリティ上の注意点

共通する重要な注意点

参考

  1. Access – Unlocking an Access VBA Project
  2. accessのVBAモジュールパスワードがわからない時の解除方法
comments powered by Disqus