首页 > 解决方案 > 使用 VBA 打开时获取 .xlsm 文件以不执行代码

问题描述

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

我正在打开的一些工作簿中包含(做得不好)VBA 代码,然后尝试计算 UDF 并严重失败。

如果不诉诸 anOn Error Resume Next或 an On Error GoTo,我怎么说“打开这个文件,不要运行任何代码”。

由于可能的安全问题,试图避免让代码首先执行。打开这些文件我感觉很舒服,而且它们很有可能不会受到损害,但是可能会发生违规行为,为什么在我不需要的时候有一个洞?我也不希望错误消息中断我的代码执行。

搜索网络只是显示我 shift+open 打开文件而不执行代码,这根本不是我想要做的。我正在寻找等效的 VBA 方法。

标签: vbaexcel

解决方案


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。启用所有宏。这是应用程序启动时的默认值。


推荐阅读