Excel VBAプロジェクトのパスワード復元・復旧方法
例えば、社内のシステムなどではマクロをパスワードでロックしてエンドユーザが勝手にマクロを変更しないようにしたい場合や、開発中のソースの流出防止を考慮しパスワードでロックしたい場合、その他にも何らかの理由でソースを表に出したくないケースはたくさんあると思います。
でも、パスワードを忘れてしまったり、設定時の誤入力に気づかずわからなくなったり、最初に作った人が会社を辞めちゃったりなど、パスワードが分からなくなったという事故が起きると、他人どころか自分も見られなくなってしまいます。バグが出ても直せませんし、下手をすると一から作り直し…なんてことは、やりたくないですよね(汗)
そんな場合でも、運が良ければムリヤリ解除することで復旧できます。でも、決して悪用はダメです。おいらも、方法は知ってても絶対にやりませんし。
準備するもの
作業に入る前に、
バイナリエディタ
を準備してください。バイナリエディタなら何でも良いです。ちなみに、おいらは
Stirling
っていうフリーソフトを使ってます。
それと、
必ずワークブックのバックアップを取っておいて下さい
。誤って破損すると、それこそ取り返しの付かないことになります。
パスワードはどこにある?どんな形?
バイナリエディタを準備したら、次はマクロにパスワードが設定されているワークブックをバイナリエディタで開いてみましょう。開くと、
こんな意味不明の文字列
が表れると思いますが、これがワークブックの本当の姿です(笑)
その次は、
パスワードが書いてある場所
です。とりあえず
DPB=
という文字列を検索してみてください…見つかりましたか?この
DPB=
という文字列の後に
"
で挟まれた意味不明の文字列がありますが、何を隠そうこれがこのネタの主役
パスワード
です。ただし、スクランブルがかかっているのでこの状態では何が何だかわかりませんし、この文字列からシコシコ解析するってわけでもないです。
ではどうするかというと、
スクランブルされたパスワードの文字列を新たに作り
、この部分を
作った文字列で置き換える
のです。それだけで、開くのを諦めていたマクロを開くことができるようになります。
ちなみに、意味不明に見えても法則が1つだけあります。それは、
文字列の長さ
です。この部分は、たいての場合
72文字
、
74文字
、
76文字
、
78文字
になっています。
ごく希に例外もあります
が、その場合の復旧方法は最後で!
なお、この
ワークブック
をダウンロードして、復旧の練習台としてご利用ください。パスワードは
内緒
で、
DPB
の所は
74文字
になってます。
スクランブルパスワードを作る
ここからは、
スクランブルされたパスワード
のことを
スクランブルパスワード
と書きます(笑)
この作業、特に難しいものではありませんし特殊なツールを使うわけでもありません。エクセルでワークブックを新規作成し、マクロのパスワードを設定して保存。その後、バイナリエディタでそのワークブックを開き、入っている
DPB=
以降の部分を使います。
なお、スクランブルパスワードの長さは、保存するたびに
72文字
、
74文字
、
76文字
、
78文字
のいずれかが設定されます。もしも、希望の長さになっていなかったら、ワークブックを再度保存した後バイナリエディタで確認の手順を、希望の長さが出るまで繰り返しましょう。
詳しい手順は、
こちらを参照
してください。なお、この手順はサンプルのワークブックを復旧することを前提(文字列長が
74文字
)とした内容になっています。
トドメの一撃!
スクランブルパスワードが出来たら、最後にそれを
目的のワークブックの同じ部分にコピペ
します。もちろん、コピペはバイナリエディタ上で行います。
文字列を貼り付けしたら忘れずに保存し、バイナリエディタを閉じちゃいましょう。その後、エクセルで目的のワークブックを開き、マクロのパスワードを聞かれたらスクランブルパスワードを作ったときに入れたパスワードを入れてみましょう…なんと、今まで諦めていたマクロが開きます!
詳しい手順は、
こちらを参照
してください。なお、この手順はサンプルのワークブックを復旧することを前提(スクランブルパスワード作成時のパスワードは
a
)とした内容になっています。
イレギュラーケース其の1/長い?!
スクランブルパスワードの文字列長は、通常
72文字
、
74文字
、
76文字
、
78文字
ですが、中には
82文字
とか
84文字
なんていうへんてこりんな文字列のときもあります。
そんなときは、とりあえず
78文字
のスクランブルパスワードを作成して貼り付け、余った部分には次の16進数コードを必要な長さだけ設定しましょう。
81 00 00 00 82 00 00 00 83 00 00 00
※この値は16進数です。バイナリエディタでは、16進数モードで入力してください。
復旧事例は、
こちらを参照
してください。
イレギュラーケース其の2/割れてる?
たまに、
DPB=
以降が
こんなふうに
なっているときもあります。でも、よーく見て下さい。スクランブルパスワードが分割され設定されているだけです。
このような場合は、コピペするときも分けて行いましょう。
イレギュラーケース其の3/短い?!
ここで紹介しているのは、Excel 2000〜2003での例です。しかし、中にはスクランブル部分が極端に短かいケースもあります。一般的にはExcel 97などで作成したワークブックの場合です。
こういったワークブックは、
さらに荒っぽい方法
で復旧することができる場合があります。なお、この「さらに荒っぽい方法」はこれまで紹介したケースでに有効ですが、ごく希にワークブックそのものやVBAプロジェクトが壊れる場合があります。通常の長さの場合は、DPB=のスクランブル部分を書き換える方法で行いましょう。
なお、この「さらに荒っぽい方法」でも復旧しないときは、きっぱり諦めてくださいorz
エクセルマクロ基礎知識
1.はじめに
2.マクロのススメ
3.Visual Basic Editorを開いてみよう
4.マクロを書く場所
5.マクロのセキュリティについて
6.マクロをパスワードで保護
・それと、通常の解除手順
7.マクロのパスワードを忘れたとき
・これは復旧方法です
・悪用は絶対に禁止!!
■サイト内を検索
Happy! Happy! Islandその他のコンテンツ
■
VBAプログラミング系
Access VBAのTipsとサンプル
Excel VBA(エクセルマクロ)のTipsとサンプル
VBScript/JScriptのTipsとサンプル
プログラミング基礎・入門
■
入門と使い方
Access入門と使い方講座97~2003/2007/2010/2013
Access VBAプログラミング入門 2013/2010/2007/2003
Excel入門と使い方講座2013/2010/2007
■
ダウンロードコーナー
AccessとExcelのフリーソフト
■
その他
質問受け付けコーナー「管理人に聞いてみよう♪」
BBS過去ログ広場
HTMLの書き方
管理人プロフィール
┗
twitter(外部サイト)
管理人へメール
■
別館(海外向けサイト)
Excel Games and Access Games
VBAプログラミング&Tips集の
"Happy! Happy! Island"トップページへ
[PR]管理人が心を込めて書いた本
■
最速攻略 AccessVBAサンプル大全集
Access 2013/2010/2007対応版
■
速効!ビジネスPC Accessマクロ&VBA
Access2013/2010/2007対応
■
最速攻略Accessクエリ テクニック大全集
Access2013/2010/2007対応
■
AccessVBAマクロ超入門講座 Access2010/2007対応
■
ExcelVBA超入門講座 Excel2010/2007対応
■
ExcelVBAでできる RPGゲーム作成入門
■
[改訂新版]実践COBOLプログラミング入門
■
最速攻略 VBScriptサンプル大全集
Windows7/Vista/XP/2000対応
(
アマゾン
へジャンプします)
[PR]注目の情報
転職成功の秘訣はサイトに公開されない求人にあった
採用人数が少ない・専門性が高い・競合他社に知られたくないなど、魅力的な求人情報ほど一般には公開できないのです。
株デビューするなら SBI証券!
業界屈指の格安手数料と業界最高水準のサービスで口座数はネット証券 No.1!口座開設料・管理料は無料。
GDOゴルフショップ
ゴルフ用品のオンラインメガストア。品揃え10万点!
アスタリフトコラーゲンドリンク
毎日続けるものだから・・まとめ買いで最大10%OFF!集中コラーゲンケアで、ハリと潤いの溢れる毎日へ。
[リンク]IT関連情報サイトなど
gihyo.jp
技術評論社提供のIT関連コンテンツサイト
Copyright(C) 1999-2015
結城圭介
(Ver.3.51) All rights reserved