⚠️ 注意事項(必読)

🚫 悪用厳禁 — 必ず読んでください

本記事で解説する手法は、自分が作成・管理しているファイル、または正当な権限を有するファイルに対してのみ使用してください。

他者が作成したファイルへの無断アクセス・解析・改ざんは、以下の法律に抵触する可能性があります。

  • 不正競争防止法(営業秘密の侵害)
  • 不正アクセス禁止法
  • 著作権法(プログラムの無断複製・改変)
  • 刑法(電子計算機損壊等業務妨害罪 など)

また、作業前に必ずファイルのバックアップを取得してください。バイナリ編集により、ファイルが破損する場合があります。本記事の内容を実行したことによる損害について、筆者は一切の責任を負いません。

.xls 形式の構造

.xls は Excel 97〜2003 形式のバイナリファイルです(Compound Document / OLE2 形式)。 VBA プロジェクトのパスワードは DPB= という文字列のあとにハッシュ値として格納されています。

.xls の特徴
バイナリ形式。1ファイルに全データが格納される。バイナリエディタで直接編集できる。
DPB= とは
VBA パスワードのハッシュ値を格納するフィールド。これを無効な値に書き換えることでロックを解除できる。
.xlsm との違い
.xlsm は ZIP 形式なので、展開してから編集する手順が必要(PART 03 参照)。

必要なツール

ツール入手先用途
HxD(推奨) https://mh-nexus.de/en/hxd/ 無料のバイナリエディタ。Windows 用。インストール不要な Portable 版もあり。
010 Editor 公式サイト 高機能な商用バイナリエディタ。試用版あり。
テキストエディタ(バイナリモード) VS Code 等 バイナリ表示プラグインが必要。HxD の方が操作が簡単。

💡 HxD が推奨な理由

無料・軽量・日本語対応(部分的)・検索置換機能が使いやすいため、初めての方には HxD が最適です。公式サイトから ZIP を解凍するだけで使えます。

方法1:バイナリエディタで書き換える

⚠️ 作業前にバックアップを取る

元のファイルを別フォルダにコピーしてから作業してください。誤編集でファイルが開けなくなることがあります。

  1. Excel ファイル(.xls)を閉じる
    編集対象の .xls ファイルが Excel で開かれている場合は必ず閉じてください。開いたまま編集するとファイルが破損します。
  2. HxD を起動し、.xls ファイルを開く
    HxD を管理者権限で起動し、「ファイル → 開く」から対象の .xls ファイルを開きます。
  3. DPB= を検索する
    「検索 → 検索(Ctrl+F)」を開き、「テキスト」タブで DPB= を入力して検索します。
    検索文字列
    DPB=
  4. DPB=DPx= に書き換える
    「検索 → 置換(Ctrl+R)」を使い、DPB=DPx= に置換します。
    変更前変更後目的
    DPB= DPx= Excel にパスワードを不正な値として認識させ、リセットプロンプトを表示させる
  5. ファイルを保存する
    「ファイル → 保存(Ctrl+S)」で上書き保存します。HxD がバックアップを作成するか確認するダイアログを出す場合はキャンセルして構いません(事前にバックアップ済みのため)。
  6. Excel で .xls ファイルを開く
    Excel で編集したファイルを開きます。「プロジェクトのパスワードが不正です。続行しますか?」のようなダイアログが表示されます。「はい」 をクリックしてください。
  7. VBE を開いてパスワードをリセットする
    Alt + F11 で VBE を開きます。プロジェクトが無保護の状態で開けるので、「ツール → VBAプロジェクトのプロパティ → 保護タブ」からパスワードを新しく設定(または空欄にして解除)します。
  8. ファイルを保存して完了
    Ctrl + S で保存すれば完了です。

うまくいかない場合

DPB= が複数見つかる場合はすべて DPx= に置換してください。1件しかヒットしない場合でも同様です。

方法2:.xlsm に変換して解除する

.xls ファイルを一度 Excel で開き(パスワード入力画面が出る前、または入力せずにマクロ以外の内容だけ開ける場合)、 .xlsm 形式で保存し直してから PART 03 の手順を適用する方法もあります。

💡 .xlsm への変換手順

Excel で .xls を開き → 「名前をつけて保存」→ ファイル形式を「Excel マクロ有効ブック(*.xlsm)」で保存 → その後 PART 03 の手順 で解除します。

よくあるエラーと対処法

症状原因対処法
ファイルが開けなくなった バイナリ編集ミス バックアップから復元する
DPB= が見つからない パスワードが未設定 / 別の場所にある パスワードが設定されていないか確認。DPB(=なし)でも検索してみる
置換後も同じダイアログが出ない 置換が失敗している HxD を管理者権限で再起動して再試行
Excel がクラッシュする ファイル破損 バックアップから復元。または .xlsm 変換後に PART 03 を試みる

形式比較表(.xls vs .xlsm)

項目.xls.xlsm
ファイル構造バイナリ(OLE2/Compound)ZIP 内 XML + vbaProject.bin
解除難易度★★☆(中)★★★(やや高)
必要ツールバイナリエディタのみバイナリエディタ + ZIP 解凍ツール
操作のポイントDPB= を DPx= に置換vbaProject.bin を展開して同様に編集
解除手順本記事PART 03

まとめ

.xls 形式の VBA パスワード解除は、HxD などのバイナリエディタで DPB=DPx= に書き換えるだけで完結します。 手順は比較的シンプルですが、バックアップの取得自分のファイルのみに使用することを必ず守ってください。

次の記事

.xlsm 形式の解除手順は PART 03 で解説しています。ZIP 構造を利用した手順と Python による自動化も紹介します。

→ PART 03 — .xlsm形式のVBAパスワード解除