EXCEL パスワード設定の解除方法について

f:id:gyokusen_since:20190122150104p:plain

パスワード設定による保護解除の一覧表について

表形式にまとめたらここに張り付けます。
とりあえず箇条書きで失礼します。

  1. 読み取りパスワード
  2. 書き込みパスワード
  3. シートの保護パスワード
  4. ブックの保護パスワード
  5. VBAのパスワード

===============

読み取りパスワード

これを簡単に解除する方法はなさそうです。
つまりEXCELのデータ自体を許可した人以外に見られたくない場合は8桁の4種混合パスワード(英大文字、英子文字、数字、半角記号)ならその組み合わせの数が
77^8=1,235,736,291,547,680 (=77^8/(60*60*24*365*10^6)=39.18年)
でまず解除不可能というわけです。
(1秒間に100万回のパスワード入力が可能とした場合の計算結果です)
因みに4桁のパスワードなら解除できそうです。
計算式=36^4/(100*60)=約280分=5時間程度
但し英大文字が混ざっている場合は・・・
計算式=62^4/(100*60)=約279時間=約3日間
CPU使用率を見ると17%ぐらいだったので
・英子文字だけのパスワード4桁のケースとして実行
・英子文字+数字だけのパスワード4桁のケースとして実行
・英大文字+英子文字+数字だけのパスワード4桁のケースとして実行
をそれぞれエクセルブックをコピーしてトライすればいいかなとは思います。
ちょっと調べた限りではほとんどフリーのソフトはありませんでした。
6桁までなら解除OKのソフトはありましたがパスワード試行範囲を指定できないので不採用にしました。

書き込みパスワード

itojisan.xyz

シートの保護パスワード

neos21.hatenablog.com

ブックの保護パスワード

www.saka-en.com

VBAのパスワード

やり方は解除マクロを実行する方法
neos21.hatenablog.com
エラーを出させて解除する方法
stackoverflow.com
There is another (somewhat easier) solution, without the size problems. I used this approach today (on a 2003 XLS file, using Excel 2007) and was successful.

Backup the xls file
Open the file in a HEX editor and locate the DPB=... part
Change the DPB=... string to DPx=...
Open the xls file in Excel
Open the VBA editor (ALT + F11)
the magic: Excel discovers an invalid key (DPx) and asks whether you want to continue loading the project (basically ignoring the protection)
You will be able to overwrite the password, so change it to something you can remember
Save the xls file*
Close and reopen the document and work your VBA magic!
NOTE: Be sure that you have changed the password to a new value, otherwise the next time you open the spreadsheet Excel will report errors (Unexpected Error), then when you access the list of VBA modules you will now see the names of the source modules but receive another error when trying to open forms/code/etc. To remedy this, go back to the VBA Project Properties and set the password to a new value. Save and re-open the Excel document and you should be good to go!
サイズの問題がない、もう少し簡単な解決方法があります。私は今日(2003年のXLSファイルでExcel 2007を使用して)この方法を使用し、成功しました。

xlsファイルをバックアップします。
HEXエディタでファイルを開き、DPB = ...の部分を見つけます。
DPB = ...文字列をDPx = ...に変更します。
Excelでxlsファイルを開く
VBAエディタを開く(ALT + F11)
マジック:Excelは無効なキー(DPx)を発見し、あなたは(基本的に保護を無視して)プロジェクトをロードし続けるかどうかを尋ねます
パスワードを上書きすることができるようになるので、忘れないように変更してください。
xlsファイルを保存します*
文書を閉じて再度開き、VBAの魔法をこなしてください。
注:パスワードを新しい値に変更したことを確認してください。そうしないと、次回スプレッドシートを開くときにExcelがエラー(予期しないエラー)を報告し、VBAモジュールのリストにアクセスすると名前が表示されます。ソースモジュールですが、forms / code / etcを開こうとすると別のエラーを受け取ります。これを解決するには、VBAプロジェクトのプロパティに戻り、パスワードを新しい値に設定します。 Excel文書を保存して再度開くと、問題ないはずです。
f:id:gyokusen_since:20190128170913p:plain