在 Excel 中的“想要保存更改”对话框后无法捕获

Posted

技术标签:

【中文标题】在 Excel 中的“想要保存更改”对话框后无法捕获【英文标题】:Cannot trap after "Want to save your changes" dialog in Excel 【发布时间】:2015-01-19 08:16:54 【问题描述】:

    在 Word VSTO 中,我们有 DocumentBeforeSave 事件,该事件在“想要保存更改”对话框之后立即调用,我可以轻松取消标准保存对话框并显示我自己的。

    但在 Excel VSTO 中,WorkbookBeforeSave 在“保存”对话框关闭后被调用,这会导致我自己的保存对话框在内置对话框之后显示。我可以使用 WorkbookBeforeClose 事件,但我应该显示我自己的“想要保存您的更改”对话框,并且当按下“不保存”时,自动保存功能也将不起作用。

有没有办法在 Excel 中的“想要保存更改”对话框之后立即调用我的代码,并能够阻止内置的“保存”对话框或以某种方式告诉 Excel 创建一个自动保存点(使用我自己的“想要保存你的更改”对话框)当我按“不保存”时?

【问题讨论】:

@vba4all 是的,我确定。尝试单击关闭新文档。从 ctrl + s 和 File-> Save all ok 保存 您是否将 SaveAsUI 设置为 False 并将 Cancel 设置为 True 【参考方案1】:

我不确定你是否找到了答案,因为这个帖子有点过时了,但我想我会投入 0.02 美元。

我在解锁的非常隐藏的工作表和每个可见的 Worksheet 上创建一个 [isDirty] 命名范围。更改我设置 [isDirty]=True

在 Workbook.BeforeClose 我有这个:

      If [IsDirty] = True Then
            Select Case MsgBox("Do you want to save the changes you made to '" & .Name & "'?", _
                vbYesNoCancel + vbExclamation)
                Case Is = vbYes
                    ThisWorkbook.Save
                    [IsDirty] = False
                Case Is = vbNo
                     'Do not save
                Case Is = vbCancel
                    Cancel = True
            End Select
     End If

In Private Sub Workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As Boolean)

    ThisWorkbook.Save
    [IsDirty] = False
    Cancel=True

【讨论】:

以上是关于在 Excel 中的“想要保存更改”对话框后无法捕获的主要内容,如果未能解决你的问题,请参考以下文章

excel如何退出编辑状态

为啥excel图表制作时引用无效?

excel保存时出现“请注意,您的文档的部分内容可能包含了文档检查器无法删除的个人信息”

EXCEL文件打开乱码,xls格式的,如何修复?

什么是UTF8数据导出到Excel的最佳方法是什么

excel如何检索重复内容