如何检测用户是否尝试点击保存/保存为选项或按下ctrl-S在Microsoft Word中使用VBA代码?

我想检测用户按下ctrl-S或使用VBA excelmacros代码单击保存Microsoft Word的选项。

我find了关于closures时保存更改和检测文档是否越来越近的相关链接,但是我无法find一些用于检测Word文档保存的示例代码。

任何帮助将不胜感激。

谢谢

不幸的是(或者幸运的是)Word不能像excel那样工作,并且键绑定遵循不同的逻辑。 因此,在Word中,你应该尝试这样的事情来绑定Ctrl + S。 这个想法是,在打开文件时,您告诉应用程序将Ctrl + S绑定到SaveMe子文件。

 Option Explicit Private Sub Document_Open() With Application .CustomizationContext = ThisDocument .KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyControl, wdKeyS), KeyCategory:=wdKeyCategoryCommand, Command:="SaveMe" End With End Sub Public Sub SaveMe() MsgBox "User Saved" End Sub 

把代码放入ThisDocument

在这里输入图像说明

到目前为止,它只适用于Ctrl + S。 如果您select通过菜单保存,则不会遵循此逻辑。 这是你应该做的:

有关一般解决scheme,请按照以下说明操作

I.创build一个clsWord并将下面的代码放在里面:

 Option Explicit Public WithEvents appWord As Word.Application Private Sub appWord_DocumentBeforeSave(ByVal Doc As Document, SaveAsUI As Boolean, Cancel As Boolean) Call SaveMe End Sub 

II。ThisDocument的代码更改为:

 Option Explicit Dim myWord As New clsWord Private Sub Document_Open() With Application .CustomizationContext = ThisDocument .KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyControl, wdKeyS), _ KeyCategory:=wdKeyCategoryCommand, Command:="SaveMe" End With Set myWord.appWord = Word.Application End Sub 

III。 在一个模块中:

 Option Explicit Public Sub SaveMe() MsgBox "User Saved" End Sub 

这些想法的一部分来自MSDN在这里 – https://msdn.microsoft.com/en-us/library/office/ff838299.aspx但是那里的代码是不完整的:)