Excel 不会提示在 Application.Quit 上保存未保存的文件
Posted
技术标签:
【中文标题】Excel 不会提示在 Application.Quit 上保存未保存的文件【英文标题】:Excel doesn't prompt to save unsaved files on Application.Quit 【发布时间】: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 都不会提示您保存。
【参考方案1】:
禁用 Solver 插件会返回正常行为。
【讨论】:
感谢收尾。出于好奇,您是如何确定是这种情况 - 反复试验,或者您是否在其他地方找到了论坛答案? 我打算停用我自己的加载项,看看它是否会导致问题。我注意到加载项列表中的 Solver 并尝试禁用它并解决了问题。运气的中风。 :)【参考方案2】:我尝试了相同的方法来禁用 Solver Add-In,但没有奏效。我决定也尝试禁用 Hstbar 加载项。他们俩都禁用了提示符再次开始工作。
【讨论】:
【参考方案3】:我正在使用以下代码保存工作簿并关闭应用程序
ActiveWorkbook.Save
Application.Quit
但在崩溃后,excel 要求我禁用求解器。禁用求解器后,Excel 无法识别保存命令,尽管有保存命令,它仍继续询问我是否要保存工作簿。
然后我发现这个bug可以通过再次启用求解器来解决...
很奇怪
【讨论】:
以上是关于Excel 不会提示在 Application.Quit 上保存未保存的文件的主要内容,如果未能解决你的问题,请参考以下文章
Excel表提示“无效引用 ,公式中所引的单元格不能位于256列或65536行后”这个错误