有时候,我们对自己所设置的 Excel VBA工程密码忘记了,导致不能对 VBA 代码进行修改或修正。此时,可以用本文所述方法进行移除。
破解的原理和方法:MS Excel 文件以压缩格式存储的,如果 Excel 文档有 VBA 工程,在压缩文档中有一个 vbaProject.bin 文档。这是一个二进制的文件,其中保存有VBA工程的密码,可以将文件的密码部分替换,达到破解的目的。
需要用到的工具:VSCode、WinRAR、 合适的二进制文件编辑器。为什么说是合适的二进制文件编辑器呢?主要是在于能让我们方便地替换文件的内容。一会说明。
假设我们有一个 工作簿1.xlsm 文件,其中的 VBA 工程密码我们不知道,需要破解。我们先将文件的扩展名改为 rar, 然后用 WinRAR 解压该文件。为安全起见,原始文件请做好备份。
该文件位于 xl 文件夹下面。
接下来,使用 VSCode + Hex Editor插件方法以文本方式打开 vbaProject.bin,下面截图的部分就是密码存储区。
我们的目的就是要对框起来的部分进行替换。新建一个 Excel 文件,比如 123.xlsm,将 123.xlsm 的VBA 的工程密码设为 123,再将文件名改为 123.xlsm.rar,然后用 WinRAR 打开(注意:是打开,不是解压缩)。WinRAR 提供 二进制文件的查看功能,我们同样找到 vbaProject.bin 的密码保存区,将这一部分文本拷贝出来:
将123.xlsm.rar 文件中的这一部分拷贝出来,替换解压的文件夹中相应的部分并且保存。
接下来,需要将修改后的 vbaProject.bin 塞回到 “工作簿1.xlsm.rar” 文件中。为保险起见,用 WinRAR 查看的方式打开 “工作簿1.xlsm.rar” 文件,如下图这样:
进入 xl 文件夹:
将修改后的 vbaProject.bin 拖到相同的位置,就替换了。再将 “工作簿1.xlsm.rar” 更名为 “工作簿1.xlsm” 即可。此时,该文件的 VBA 工程密码为123,我们可以修改密码,或者去掉 VBA 工程密码保护。