【发布时间】:2014-07-07 17:11:27
【问题描述】:
我发现,虽然可以通过代码以编程方式禁用 Excel 的“兼容性检查器”(通过使用 ActiveWorkbook.CheckCompatibility = False,在 SaveAs 调用之前或通过捕获 ActiveWorkbook.BeforeSave 事件在全局范围内),但它没有如果检测到“功能严重丧失”,则似乎不起作用。快速测试方法:
- 创建一个新的 Excel 2010 工作簿。
- 选择 A1:A2 并选择条件格式(无所谓)。
- 选择 A2:A3 并选择不同的条件格式。 A2 应应用两种不同的条件格式。
-
打开 VBA 编辑器,并将以下代码添加到工作簿模块:
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 文件(根据供应商的要求)。因为在无人值守的系统上每两小时会在几十个不同的模板工作簿上发生这种情况,所以我不能简单地取消选中每个工作簿的兼容性要求。我的意思是,我想我可以,但那将成为我的全职工作。我需要能够在运行时关闭任何工作簿的兼容性检查,这是第一次,无需人工干预。
【问题讨论】:
-
尚未测试,但除了
Workbook.CheckCompatibility之外,还可以尝试Workbook.DoNotPromptForConvert- 请参阅here -
您可以尝试使用msdn.microsoft.com/en-us/library/office/… 来自动化用户交互
-
CheckCompatibility标志也不起作用。似乎在 UI 对话框出现之前触发了“BeforeSave”事件,但兼容性检查正在运行之后该框被关闭。
标签: excel excel-2010 vba