我有一個損壞的Excel vbaproject.bin
從.xlam
加載項中提取。我如何才能讀取從這個bin文件中提取的vba代碼作爲HEX流的模塊?我使用oletools
,更多的細節在這個線程:如何讀取從vbaProject.bin提取的十六進制流的vba代碼?
https://bitbucket.org/decalage/oletools/issues/38/extracted-vba-hex-files-from-vbaprojectbin
我有一個損壞的Excel vbaproject.bin
從.xlam
加載項中提取。我如何才能讀取從這個bin文件中提取的vba代碼作爲HEX流的模塊?我使用oletools
,更多的細節在這個線程:如何讀取從vbaProject.bin提取的十六進制流的vba代碼?
https://bitbucket.org/decalage/oletools/issues/38/extracted-vba-hex-files-from-vbaprojectbin
我從來沒有成功地恢復與oletools VBA代碼。不過,我取得了一些成功oledump:
http://blog.didierstevens.com/programs/oledump-py/
我發現它更適合與一個已損壞的工作簿工作。所以,如果你想給它一個嘗試,下載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,那麼代碼很可能是不可恢復的。
這工作完美! @florentbr非常感謝你! – denfromufa
實際上其中一個模塊沒有提取,雖然notepad.exe在隨機字符之間顯示了一些代碼。 – denfromufa
該模塊可能已損壞而無法解壓縮和恢復。欲瞭解更多信息:http://www.wordarticles.com/Articles/Formats/StreamCompression.php –