在Excel中具有宏。该宏的一部分使用Workbooks.Open(Filepath)
我要打开的一些工作簿中有(很差的)VBA代码,它们试图然后计算UDF并严重失败。
如果不求助于“下一步出错时恢复”或“出错时goto”,我怎么说“打开此文件,请勿运行任何代码”。
由于可能的安全问题,试图避免让代码首先执行。我很舒服地打开了这些文件,并且很有可能它们不会受到威胁,但是可能会发生漏洞,为什么当我不需要文件时会出现漏洞?我也不想让错误消息打扰我的代码执行。
谷歌搜索只是向我展示了shift + open会在不执行代码的情况下打开文件,这根本不是我要执行的操作。我正在寻找等效的VBA方法。
谢谢
答案 0 :(得分:4)
AutomationSecurity
可能是您想要的:
https://docs.microsoft.com/en-us/office/vba/api/Excel.Application.AutomationSecurity
MsoAutomationSecurity可以是以下MsoAutomationSecurity之一 常数。
msoAutomationSecurityByUI 。使用在 安全对话框。
msoAutomationSecurityForceDisable 。全部禁用 以编程方式打开的所有文件中的宏,而不显示任何宏 安全警报。注意此设置不会禁用Microsoft Excel 4.0宏。如果以编程方式打开包含Microsoft Excel 4.0宏的文件,则系统将提示用户确定是否 还是不打开文件。
msoAutomationSecurityLow 。启用所有 宏。这是启动应用程序时的默认值。
答案 1 :(得分:4)
您可以为新打开的文件禁用宏 ,打开工作簿,然后重新启用宏:
Private Sub OpenWorkBookMacroDisabled(wbPath As String)
Application.AutomationSecurity = msoAutomationSecurityForceDisable
Workbooks.Open (wbPath)
Application.AutomationSecurity = msoAutomationSecurityByUI
End Sub