【问题标题】:MS Word Interop: Cancel (Don't Show) the 'Save Changes' Dialog on CloseMS Word 互操作:关闭时取消(不显示)“保存更改”对话框
【发布时间】:2012-12-07 15:23:11
【问题描述】:

我正在使用 MS Interop 为用户打开生成的文件,允许他们对其进行编辑然后关闭它,然后我为他们保存它(这是更大进程的一部分)。由于用户不需要手动保存文件,我想在用户尝试关闭文档时取消该弹出对话框以保存文件。在 DocumentBeforeClose 事件的处理程序中,以下内容似乎对我不起作用:

App.ActiveDocument.Saved = true;

这似乎应该将 Word 文档标记为已保存,但没有。

有人遇到过这个问题吗?

-nomad311

【问题讨论】:

  • 事件是否触发?正在关闭的文档是事件处理程序 (Sub app_DocumentBeforeClose(ByVal Doc As Document, Cancel As Boolean) 的参数,所以我会简单地尝试 Doc.Saved = True
  • 是的,我可以中断调试方法。 App.ActiveDocument 对同一个 Doc 变量的引用,但我也尝试直接执行此操作,但仍然没有更改:( 我还尝试在将 Save() 设置为 false 和 Quit() 的 Application 对象上调用将 save 设置为 false ...并且没有什么能阻止弹出窗口!!!!!!
  • 是否安装了其他可能干扰的 Word 加载项?
  • 不,自从我安装这个项目以来,我只在这个项目中使用过 Word。
  • 您确定在将 Saved 属性设置为 true 后没有修改文档吗?请尝试以下操作:创建一个新的 Word 文档并键入一些文本,按 Alt+F11 打开 VBA 编辑器,然后按 Ctrl+G 显示即时窗口。现在键入 ActiveDocument.Saved = True 然后返回。然后关闭文档。文档应该会在不提示您保存的情况下关闭。

标签: .net interop ms-word


【解决方案1】:

我发现我正在通过从 DocumentBeforeClose 事件处理程序调用文档的 SaveAs() 方法来创建事件链。但是,我在 DocumentBeforeSave 事件处理程序中取消了保存(旨在仅停止用户保存)。因此,取消链......这会停止关闭操作,但仍然会启动“保存更改”弹出窗口?!

...我想我会拼出来以防其他人像我一样切肉:)

-nomad311

【讨论】:

    猜你喜欢
    • 2011-10-24
    • 2018-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-17
    • 2017-10-25
    • 2012-10-16
    相关资源
    最近更新 更多