在 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 中的“想要保存更改”对话框后无法捕获的主要内容,如果未能解决你的问题,请参考以下文章