我在 DocumentBeforeSave 事件处理程序中有一些功能。
只有当用户手动调用保存(按保存按钮)时,这才应该起作用。
但是 word 2007 具有自动保存功能,并且每次自动保存工作时都会引发 DocumentBeforeSave 事件。如何检查是否通过自动保存或用户手动调用保存调用了保存?
问问题
1100 次
2 回答
0
实际上有多种方法可以区分。
Application.WordBasic.IsAutosaveEvent
选项 2(我在找到选项 1 之前所做的)
从功能区截取 FileSave(和 FileSaveAs)命令:
<customUI xmlns="http://schemas.microsoft.com/office/2009/07/customui" onLoad="Ribbon_Load"> <commands> <command idMso="FileSave" onAction="SaveIntercept" /> </commands> </customUI>
在 SaveIntercept 方法中设置一个标志,并将 CancelDefault 设置为 false,以便继续保存。
public void SaveIntercept(IRibbonControl control, ref bool CancelDefault) { logger.Info("Intercepted Manual Save"); ManualSave = true; CancelDefault = false; }
还实现 BeforeDocument_BeforeSave,并检查那里的标志。如果设置了标志,则它是手动的,否则它是自动保存的(或者可能来自另一个加载项;不确定这是否有效)。
bool quit = !customizations.ManualSave; if (quit) { logger.Info("Autosave. Allowing Word to handle this save."); e.Cancel = false; return; } else { logger.Info("Manual save. Proceeding."); customizations.ManualSave = false; }
这涵盖了通过后台按钮、快速访问工具栏按钮和保存快捷方式进行的保存(即使它们重新定义了键盘快捷方式)
于 2016-02-04T21:11:17.780 回答