You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Word VSTO干扰Windows关机:求无保存关闭Word应用的可行方案

需求:不保存文档直接关闭Word应用程序

现有同类问题的解决方案均不适用,需要实现不保存文档的情况下关闭Word应用程序。触发逻辑是:当用户关闭Word应用且有文档打开时,会触发DocumentBeforeClose事件;但用户关闭单个文档(切换文档场景)时,仅需关闭当前文档,不能退出应用。

基础事件处理代码

Private Sub OnDocumentBeforeClose(ByVal doc As Microsoft.Office.Interop.Word.Document, ByRef Cancel As Boolean)
        'Some code
End Sub

已尝试的无效方案

方案1:直接关闭文档/禁用提示

尝试直接调用文档关闭方法,或禁用Word提示,但仅能关闭文档,应用仍保持运行状态,用户需点击两次关闭按钮才能退出Word。且无法直接在事件中调用Quit(),否则关闭单个文档时也会退出应用,不符合需求。

代码示例:

Private Sub OnDocumentBeforeClose(ByVal doc As Microsoft.Office.Interop.Word.Document, ByRef Cancel As Boolean)
    'Some code
    doc.Close()  '仅关闭文档,应用仍运行,需两次点击关闭
    doc.Close(SaveChanged:= False) '结果同上
    _application.DisplayAlerts = Microsoft.Office.Interop.Word.WdAlertLevel.wdAlertsNone '无任何效果
End Sub

方案2:标记文档为已保存

通过设置文档的Saved属性为True、SaveNormalPrompt为False,试图跳过保存提示,但未达到关闭应用的效果。

代码示例:

Private Sub OnDocumentBeforeClose(ByVal doc As Microsoft.Office.Interop.Word.Document, ByRef Cancel As Boolean)
    'Some code
    _application.ActiveDocument.Saved = True
    _application.ActiveDocument.SaveNormalPrompt = False
End Sub

方案3:拦截保存事件

添加DocumentBeforeSave事件处理,尝试自动保存且不弹出对话框,但无论单独设置SaveAsUI = False还是结合Cancel = True,要么弹出保存对话框,要么完全无效果。

代码示例:

AddHandler _application.DocumentBeforeSave, AddressOf OnBeforeSave

Private Sub OnDocumentBeforeClose(ByVal doc As Microsoft.Office.Interop.Word.Document, ByRef Cancel As Boolean)
    'Some code
    If Not Doc.Saved Then
        Doc.SaveAs2()
    End If
End Sub

Private Sub OnBeforeSave(ByVal doc As Microsoft.Office.Interop.Word.Document, ByRef SaveAsUI As Boolean, ByRef Cancel As Boolean)
    SaveAsUI = False '试图不显示保存对话框
    Cancel = True '尝试取消保存,反而弹出对话框;同时设置两者也无效
End Sub

已耗费多日仍未解决,急需可行的解决方案!

内容的提问来源于stack exchange,提问作者that_noob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 08:50:36