我的程序正在加载/打开包含宏的 Microsoft Excel 文件,因此出现以下对话框:
Microsoft Excel 安全通知 Microsoft 已阻止宏运行,因为此文件的来源不受信任。文件路径:Book1 Microsoft 已阻止宏运行,因为此文件的来源不受信任。更多信息
我在Windows 10上使用Office 2016,但是这样的对话框已经存在很长时间了。
非常奇怪的是,到目前为止,例如在 2022 年夏季,此对话框都有“启用宏”按钮。现在对话框是一样的,但唯一的按钮上有“禁用宏”文本。
这样的对话框-按钮组合简直令人难以理解。一方面,对话框显示微软已经阻止了宏。另一方面,不再有“启用宏”按钮,但有“禁用宏”,但它什么也做不了,因为微软已经阻止(禁用?)宏了?
也许‘禁用’和‘阻止’是不同的事情?
主要问题是 - 如果安全对话框没有提供启用宏的按钮,我该如何启用宏?
在研究情况时我发现https://learn.microsoft.com/lv-lv/DeployOffice/security/internet-macros-blocked关于宏安全处理可能发生变化。微软将在 2022/2023 年推出这些变化,也许这可以解释为什么“启用宏”在 2022 年夏季可用,但“禁用宏”现在可用(2023 年春季)。
附加信息:
我使用的是 xls(不是 xlsx 文件),该文件在“文件-属性-常规”中没有“来自 Web 的标记”,我的计算机在 Windows 域中运行(我没有更多信息)。奇怪的是,我在 xls 文件的“开发人员-宏”中看不到任何宏内容。所以,没有什么可以保护的。我现在猜测我的 xls 文件包含一些 Excel 4 宏,我应该启用特殊机制才能在 Office 2016(或更新版本)Excel 中看到它们。目前,情况非常混乱。
附加信息 2:
我的文件在“开发人员 - 宏”下没有任何内容,但在“开发人员 - Visual Basic”下有很多 VBA 对象 - 每个工作表都有很多空的“Microsoft Excel 对象”,在“模块”中有一个大模块。这个模块包含很多函数。我猜这些 VBA 对象与宏有所不同。这些 VBA 函数可以从正在对此 Excel 文件进行某些操作的调用应用程序中调用。所以 - 没有宏,但有 VBA 对象,这可能解释了奇怪的行为?
附加信息 3:
本文https://www.ablebits.com/office-addins-blog/advantages-custom-functions-excel/很好地解释了 VBA 函数和宏之间的区别 - 第一个是function
,第二个是sub
。第一个只能在单元格内起作用,第二个可以修改单元格块。看来 - 我已经检查过了 - 我的文件只包含 VBA 函数,没有 VBA 宏。所以,这更奇怪 - 如果根本没有宏,为什么微软会报告它正在阻止宏?