我知道已经有一个与此名称相同的帖子,但它为问题提供了部分解决方案。帖子是:VSTO Word post save event
我正在使用这门课,这对我帮助很大。但是,当我在Word文件中进行更改并尝试关闭应用程序时,单击选项" Not Save"提出了保存事件。
如何知道用户是否已点击"保存"或者"不保存"试图关闭窗户时是否有点?我已经尝试了一切,但我无法了解这些信息。
答案 0 :(得分:0)
VBA的快速测试让我相信这种方法很有希望。在DocumentBeforeClose
之前触发DocumentBeforeSave
。
在下面的代码段中声明一个类级字段(saveStatus
)。
在DocumentBeforeClose
中将其设置为" False"假设用户不会保存。如果用户 保存,请在DocumentBeforeSave
中将值设置为True。如果您在保存文档时需要对文档执行某些操作,请将该代码放入此事件中。
Private saveStatus as Boolean
Private Sub app_DocumentBeforeClose(ByVal Doc As Document, Cancel As Boolean)
saveStatus = False
Debug.Print saveStatus
End Sub
Private Sub app_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
saveStatus = True
Debug.Print saveStatus
End Sub
答案 1 :(得分:0)
对于那些面临同样问题的人,我找到了解决方案。在我在Word中打开文件之前,我读取所有字节并存储在类变量中,例如,使用
的wordContentAddValueEventListener(..)
然后,每次我保存没有关闭应用程序(即单击Word中的保存按钮)时,我更新此变量wordContent。
因此,当我关闭应用程序并使用我的变量isClosed == true触发事件AfterSave时,此时我不知道用户是否在保存或不保存时关闭了应用程序。所以,我读了单词File的字节,并与我的wordContent进行比较。当用户单击“保存”选项时,内容将不同,当用户单击“不保存”选项时,内容将相等。
所以,无论它需要做什么,它都将在这两个字节数组的比较中。
记住我正在使用我在上面的问题中指出的帖子提供的WordSaveHandler,这个类可以通过单击Save Buttom或关闭应用程序来处理用户保存。