我发现,虽然可以通过代码以编程方式禁用 Excel 的“兼容性检查器”(通过ActiveWorkbook.CheckCompatibility = False
在SaveAs
调用之前或通过捕获ActiveWorkbook.BeforeSave
事件全局使用),但如果“显着丢失功能”检测到。快速测试方法:
- 创建一个新的 Excel 2010 工作簿。
- 选择 A1:A2 并选择条件格式(没关系)。
- 选择 A2:A3 并选择不同的条件格式。A2 应应用两种不同的条件格式。
打开 VBA 编辑器,并将以下代码添加到 Workbook 模块:
Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean) ActiveWorkbook.CheckCompatibility = False End Sub
在代码中放置断点。
- 返回电子表格,选择文件 > 另存为。代码将立即跳转到断点。如果您单步执行代码,则可以验证
CheckCompatibility
“立即”窗格中的设置。 - 代码完成后,选择 Excel 97-2003 文件类型并单击“保存”。
- 兼容性检查器仍然出现。
我怀疑这是因为该错误不是“次要兼容性问题”(参见http://msdn.microsoft.com/en-us/library/office/gg132972(v=office.14).aspx),但没有我似乎确实抑制了这个错误,甚至没有创建一个注册表项来禁用它。任何人都知道如何在“显着”不兼容的情况下抑制检查器?
ETA:在不涉及很多不必要的细节的情况下,我正在尝试自动化一个过程,其中打开许多供应商模板,填充数据,根据大量(并且总是略有不同)的质量控制规则集进行处理,以及保存为 .xls 文件(根据供应商的要求)。因为在无人值守的系统上每两小时会在几十个不同的模板工作簿上发生这种情况,所以我不能简单地取消选中每个工作簿的兼容性要求。我的意思是,我想我可以,但那将成为我的全职工作。我需要能够在运行时关闭任何工作簿的兼容性检查,这是第一次,无需人工干预。