使用VBA打开时使.xlsm文件不执行代码

时间:2018-08-17 04:11:23

标签: excel vba excel-vba

在Excel中具有宏。该宏的一部分使用Workbooks.Open(Filepath)

打开其他工作簿

我要打开的一些工作簿中有(很差的)VBA代码,它们试图然后计算UDF并严重失败。

如果不求助于“下一步出错时恢复”或“出错时goto”,我怎么说“打开此文件,请勿运行任何代码”。

由于可能的安全问题,试图避免让代码首先执行。我很舒服地打开了这些文件,并且很有可能它们不会受到威胁,但是可能会发生漏洞,为什么当我不需要文件时会出现漏洞?我也不想让错误消息打扰我的代码执行。

谷歌搜索只是向我展示了shift + open会在不执行代码的情况下打开文件,这根本不是我要执行的操作。我正在寻找等效的VBA方法。

谢谢

2 个答案:

答案 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