gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 20:36:03 25 4
gpt4 key购买 nike

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

我找到了关于 Save changes while closing 的相关链接和 Detecting if a document is getting close但我找不到一些用于检测 word 文档保存的示例代码。

任何帮助将不胜感激。

谢谢

最佳答案

不幸的是(或幸运的是)Word 不像 excel 那样工作,并且键绑定(bind)遵循不同的逻辑。因此,在 Word 中,您应该尝试这样的方法来绑定(bind) Ctrl + S。这个想法是在打开文件时告诉应用程序将 Ctrl + S 绑定(bind)到 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 :

enter image description here

到目前为止,这种方式仅适用于 Ctrl+S。如果您通过菜单进行保存,则不会遵循此逻辑。这就是你应该做的:

对于一般解决方案,请遵循以下说明:

一、创建 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

二、 更改 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

三、 在一个模块中:
Option Explicit

Public Sub SaveMe()

MsgBox "User Saved"

End Sub

部分想法取自此处的 MSDN - https://msdn.microsoft.com/en-us/library/office/ff838299.aspx但是那里的代码不完整:)

关于vba - 如何检测用户是否尝试单击保存/另存为选项或使用 VBA 代码在 Microsoft Word 中按下 ctrl-S?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42485870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com