我正在编写一个自定义 Word 模板,该模板在保存当前文档时进行一些处理。
在 Office2007 中,要保存文档,您可以使用 Save 和 Save As 功能,并使用 FileSave 和 FileSaveAs 宏处理事件。
但是当用户将鼠标悬停在 SaveAs 选项上时,会显示其他子选项:另存为文档、作为 Word 模板、作为 Word 97-2003 文档等。这些子选项似乎没有自己的事件,但我想知道用户何时使用它们。
所以我想出了使用 DocumentBeforeSave 事件的想法,但是我仍然需要弄清楚是使用标准 Save/SaveAs 选项还是使用子选项进行了保存。
我考虑在 Save/SaveAs 函数中将变量设置为 True,DocumentBeforeSave 事件将检查该函数以查看是否发生了正常的保存方法之一,然后将变量设置回 False。
但是在尝试了不同的方法之后,我无法弄清楚如何在 ThisDocument 和具有 BeforeSave 事件的类模块之间传递变量的值。
有任何想法吗?谢谢!
编辑:不起作用的示例代码:
这个文件:
Public pSSave As Boolean
Public Property Get SSave() As Boolean
SSave = pSSave
End Property
Public Property Let SSave(Value As Boolean)
pSSave = Value
End Property
Sub FileSave()
Me.SSave = True
If SSave = True Then
MsgBox "True"
End If
Application.ActiveDocument.Save
If SSave = True Then
MsgBox "True"
End If
End Sub
类模块:
Private Sub App_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean)
If Application.ActiveDocument.SSave = False Then
MsgBox "False"
End If
End Sub
类模块注册正常,我就不贴她的代码了。
显示的结果是 True, False, True 而理论上应该是 True, True。