如何检测用户是否尝试点击保存/保存为选项或按下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但是那里的代码是不完整的:)