【发布时间】:2011-12-08 22:42:04
【问题描述】:
在 Excel VBA 中使用 Application.Quit 应该会启动默认退出过程,其中包括提示用户保存当前在应用程序中打开的所有未保存的文档。
在跨多个系统(Excel 2010 32 位、Windows 7 64 位)进行测试时,我发现有些系统会提示用户保存,而有些系统则不会。
我们检查了整个系统的设置(包括启用所有宏和禁用受保护的视图)但无济于事。即使在不同系统上使用相同的设置也不会强制一个系统在 Excel 关闭之前提示用户保存他们的工作。
就好像 Application.DisplayAlerts 已设置为 False,但事实并非如此。我们甚至尝试了以下代码行:
Application.DisplayAlerts = True
Application.Quit
在某些系统上,即使这样仍然不会提示用户保存未保存的文档。 Excel 突然关闭。
非常感谢任何解决此问题的帮助。
谢谢!
响应 cmets 的更新:
我仔细检查了所有打开和未保存的工作簿的 Workbooks.Saved 属性,在 Application.Quit 之前它是错误的,所以这一定不是问题。
我也刚刚进行了一个简单的测试。我打开了一个工作簿,对其进行了编辑并在 VBA 的即时窗口中执行了 Application.Quit。 Excel 退出而不提示保存未保存的文件。这表明这与我的 Excel 设置有关,与我的应用程序无关。
【问题讨论】:
-
可以设置
ActiveWorkbook.Saved = True或类似的东西吗? -
在退出之前我会添加这一行
ActiveWorkbook.Saved = False(以测试单个工作簿 - 如果这可行,则需要更新代码以循环所有打开的工作簿并更改它们的保存状态)。 但这显然是一个 hack,因为保存消息应该在没有代码的情况下标记,我以前没有遇到过,我会进一步查看其他 Excel 论坛,看看是否有其他人经历过。 -
您是否可能在未更改工作簿的情况下退出?因为无论
DisplayAlerts的状态如何,如果您没有更改任何内容,Excel 都不会提示您保存。