Office 365 中保存事件的 Word VBA 事件处理 - 何时触发?

Word VBA event handling for save event in Office 365 - when is it triggered?

我有一个带有 class 的 Word 模板,它正在新文档和打开的文档中注册。目的是拦截正在保存的文档,所以我在 class:

中使用 DocumentBeforeSave 事件处理程序
Private Sub oApp_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)

VBA在模板中,我在做'new'时从Word提供的模板中选择模板。我正在使用 Word 365。

如果我使用 window 右上角的 x 关闭文档并单击 'save',以及当我实际单击 'save as' 中的保存按钮时,效果很好],如图

这太晚了,但是,我希望它在浏览选项出现之前触发。这可能吗 - 换句话说,拦截 'save as' 以及实际保存?

更重要的是,如果我使用磁盘图标保存,事件根本不会触发。我认识到模板与文档本身不同,这是否意味着触发的事件实际上仍然特定于模板而不是文档?我缺少什么才能在单击磁盘图标时触发事件?

为了完整起见,我还使用了 KeyBinding 来调用我的 Ctrl S 函数,这工作正常。

我不会说真的 "This is too late"...

你可以拦截这个事件,检查SaveAsUI是否为True,如果是这种情况,就向用户发送一条警告消息,说不允许另存为,然后使Cancel = True 并且工作簿将不再保存。还不够吗?

 If SaveAsUI Then
    MsgBox "SaveAs is Not allowed!"
    Cancel = True
 End If

我现在没有时间在 Word 中检查,但在 Excel 中事件在打开另存为浏览之前​​触发...