我有一个来自不可信来源的 XLSM 文件。内容很可能是无害的,但为了保险起见,我想先检查一下里面的 VBA 代码。
如何无风险地检查文件的源代码?Excel 的默认设置(阻止存储在“不受信任的位置”的文件中的宏)是否足够,或者是否有已知的方法可以规避该设置?
我可以设置一个没有 LAN 访问的 VM 并在那里安装 Office,但如果有更简单的解决方案,我很乐意听取...
答案1
您需要确保它不会自主执行任何操作。如果宏对某些事件做出响应,它们可以自主执行。幸运的是,我们可以抑制这种自主行为。
比如说,我们想检查其中的 VBA 编码DontCrossTheStreams.xlsm
。我们不是通过双击来打开文件,而是使用一个简短的宏来打开文件:
Sub OpenSafely()
Application.EnableEvents = False
Workbooks.Open Filename:="DontCrossTheStreams.xlsm"
End Sub
宏很容易安装并使用:
- Alt+F11 打开 VBE 窗口
- Alt+ I. Alt+M 打开新模块
- 粘贴内容并关闭 VBE 窗口
如果您保存工作簿,宏也会随之保存。
如果您使用的是 2003 之后的 Excel 版本,则必须将文件另存为 而.xlsm
不是.xlsx
。
到消除宏:
- 调出如上所示的 VBE 窗口
- 清除代码
- 关闭 VBE 窗口
到使用Excel 窗口中的宏:
- Alt+F8
- 选择宏
- 触摸运行
要了解有关宏的更多信息,请参阅:
http://www.mvps.org/dmcritchie/excel/getstarted.htm
和
http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx
必须启用宏才能使其工作!
(但一旦打开可疑工作簿,事件将被禁用)