2016-03-15 5 views
6

.xlamアドインから抽出したExcel vbaproject.binが壊れています。このビンファイルから抽出されたvbaコードを16進数で読み込むにはどうすればよいですか?私は、このスレッドで詳細をoletoolsを使用しています:vbaProject.binから抽出された16進ストリームからvbaコードを読み取る方法は?

https://bitbucket.org/decalage/oletools/issues/38/extracted-vba-hex-files-from-vbaprojectbin

答えて

6

私はoletoolsとVBAコードの回復に成功したことはありません。

http://blog.didierstevens.com/programs/oledump-py/

私はそれがより適して破損したブックで作業することが分かっ:しかし、私はoledumpといくつかの成功を収めました。あなたはそれを試してみることにしたいのであれば、oledump.pyダウンロード:

https://github.com/DidierStevens/DidierStevensSuite/raw/master/oledump.py

あなたはまた、モジュールの依存関係「olefile」をインストールする必要があります。

C:\temp>pip install olefile 

次に、7zipをを使用してブックを開きます"xl \ vbaProject.bin"を抽出します。 oledumpがvbaProject.binを読み取れない場合は、「xl \ vbaProject.bin \ VBA \」にある各モジュールを抽出することもできます。そして

vbaProject.bin内のすべてのモジュールを表示するには、このコマンドを実行する:

C:\temp>python oledump.py --vbadecompresscorrupt C:\temp\vbaProject.bin 

およびモジュール番号が続く-sを追加し、モジュールからのコードを表示する:

C:\temp>python oledump.py --vbadecompresscorrupt -s 3 C:\temp\vbaProject.bin 

vbaProject.binの読み込みに失敗した場合は、7zipを使用して対象モジュールを抽出し、直接読み取ろうとします。

C:\temp>python oledump.py -r -v --vbadecompresscorrupt C:\temp\Module1 
C:\temp>python oledump.py -r -v --vbadecompresscorrupt C:\temp\ThisWorkbook 

今、あなたがVBAの行を見ていない場合、コードはおそらくほとんど回復不可能です。

+0

これは完全に機能しました! @florentbrありがとう! – denfromufa

+0

実際には1つのモジュールが抽出されませんでしたが、notepad.exeはランダムな文字の間にいくつかのコードを表示します。 – denfromufa

+1

モジュールが壊れている可能性がありますので、解凍して復元することはできません。詳細については:http://www.wordarticles.com/Articles/Formats/StreamCompression.php –

関連する問題