【问题标题】:Excel doesn't prompt to save unsaved files on Application.QuitExcel 不会提示在 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 都不会提示您保存。

标签: excel vba


【解决方案1】:

禁用 Solver 插件会返回正常行为。

【讨论】:

  • 感谢收尾。出于好奇,您是如何确定是这种情况 - 反复试验,或者您是否在其他地方找到了论坛答案?
  • 我打算停用我自己的加载项,看看它是否会导致问题。我注意到加载项列表中的 Solver 并尝试禁用它并解决了问题。运气的中风。 :)
【解决方案2】:

我尝试了相同的方法来禁用 Solver Add-In,但没有奏效。我决定也尝试禁用 Hstbar 加载项。他们俩都禁用了提示符再次开始工作。

【讨论】:

    【解决方案3】:

    我正在使用以下代码保存工作簿并关闭应用程序

    ActiveWorkbook.Save
    Application.Quit
    

    但在崩溃后,excel 要求我禁用求解器。禁用求解器后,Excel 无法识别保存命令,尽管有保存命令,它仍继续询问我是否要保存工作簿。

    然后我发现这个bug可以通过再次启用求解器来解决...

    很奇怪

    【讨论】:

      猜你喜欢
      • 2012-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多