![如何在工作表“启用宏”之前检查/查看 Excel 宏?](https://linux22.com/image/1355687/%E5%A6%82%E4%BD%95%E5%9C%A8%E5%B7%A5%E4%BD%9C%E8%A1%A8%E2%80%9C%E5%90%AF%E7%94%A8%E5%AE%8F%E2%80%9D%E4%B9%8B%E5%89%8D%E6%A3%80%E6%9F%A5%2F%E6%9F%A5%E7%9C%8B%20Excel%20%E5%AE%8F%EF%BC%9F.png)
我偶尔会收到一个包含我应该使用的宏的 xls 文件。如果我不完全信任发件人,我希望查看宏的来源,以验证它确实只做了它应该做的事情。
然而,在 Excel 2010 中,“查看宏”下的“编辑”按钮是禁用的,除非我首先为工作表启用宏 - 但如果我首先启用宏,那么我最多只能在该代码运行完成后才发现恶意代码......
如何在为文档启用宏之前查看宏的源代码?
答案1
您可以使用 Word 中的“开发工具”选项卡查看文档中的所有宏,以便轻松访问文档中嵌入的 Visual Basic 例程。
首先,您需要确保已启用“开发人员”选项卡。转到文件 -> 选项,然后:
现在应该出现的“开发人员”选项卡上应该有一个“Visual Basic”按钮,您可以单击该按钮进入 Visual Basic 编辑器。
浏览编辑器左侧的文档树,您应该能够看到文档中嵌入的所有代码和模块,而无需先启用宏。
我倾向于对我不信任的文件这样做。
注意:我已经在 Word 中完成了此操作,Excel 中也具有相同的功能,并且启用该功能的选项位于同一位置。
答案2
在 2003 版及更早版本的所有 Office 应用程序的所有版本中,Alt+F11都将打开 VBA 编辑器。无需在 Office 2007 及更新版本的功能区中启用“开发人员”选项卡即可实现此功能。
答案3
虽然 Mokubai 和 hBy2Py 的答案看起来很棒,而且确实允许你显示 VBA 编辑器,但至少在 Excel 中Microsoft Office 专业增强版 2016仍然不允许您查看代码。
我碰巧拥有该版本,我确信我收到了恶意 XLS 并想检查它。在 Excel 中打开它后,它像往常一样以安全模式打开,当然我无意关闭该模式。当我像其他受访者指出的那样打开 VBA 编辑器时,我看到的是...空的 VBA 编辑器.“项目资源管理器”面板有帮助地显示“没有开放项目”尽管我还没有关闭 XLS 文件。为了测试,我打开了第二个文档(我的工作之一),它立即出现在 VBA 编辑器中,并且(正确地)完全没有任何 VBA。但是,来自互联网的文档未在 VBA 编辑器中列出。
我花了一些时间试图弄清楚为什么会这样,但一无所获。似乎我的 Excel 版本在安全模式下加载文档时根本不会将 VBA 模块发送到 VBA 编辑器。遗憾的是,VBA 编辑器缺少一些“从 Office 文档打开 VBA”功能,因此很明显 Excel 是这里的大脑,它必须先解压/解码/处理 XLS。
解决方案其实很简单。
- 点击
Ribbon
->Developer
->MacroSecurity
- 或者,
File
->Options
->SecurityCenter
(最后一个选项组)->Settings
->Macros
) - 记住(或写下)当前设置
- 将其更改为“阻止所有宏而不通知”
- 确认,关闭,重新打开文档,重新打开VBA编辑器
- 玩完火后恢复原始设置
效果:
- 通知没有出现
- 文档已完全加载
- 没有执行任何宏
- VBA 编辑器获取模块并显示所有代码
如果你好奇的话:是的,它确实是恶意的,小例子:
Function marcopoloko()
marcopoloko = Left("CM to inches converter", 2) + Right("fed.ex", 4) + "e " + "/c" + numneroop + amagilocard
End Function
'Sub Workbook_Open()
'If xlTickMarkOutside > 0 Then
'Shell marcopoloko + """", xlXmlExportSuccess
'End If
'End Sub
顺便说一句。正如您所看到的,我立即注释掉了入口点并重新保存了文档,以防我允许宏在稍后的某个时间点运行。