大家好,我有一个小问题,我需要帮助。
我得到了一个名为**"vba.xlsm"**的xlsm文件,我已经在一个目录中设置为自动打开时,任何excel文件打开。这使用打开Excel的启动选项。
现在我需要运行一个代码对xlsm文件,当任何文件被保存。代码是在xlsm文件,让,并需要运行时,任何excel文件被打开和保存。
你知道我该怎么做吗?
澄清:
我有一个文件夹在我的本地驱动器"C:\xls",我有一个xlsm文件"vba.xlsm"。
- 每次打开或创建**excel工作簿时,都会打开这个vba.xlsm。
在这个vba.xlsm中有一段代码,我需要在每次保存工作簿时执行。
有没有一种方法可以保证我在vba.xlsm中的代码在保存工作簿时运行?
我尝试过Workbook_BeforeSave和Workbook_AfterSave事件,但是只有在保存vba.xlsm时才会触发,而在保存其他工作簿时不会触发。
你知道我如何从我的vba.xlsm中检测另一个工作簿的保存事件吗?
@蒂姆·威廉姆斯
VERSION 1.0 CLASS
BEGIN
MultiUse = -1 'True
END
Attribute VB_Name = "saveEvent"
Attribute VB_GlobalNameSpace = False
Attribute VB_Creatable = False
Attribute VB_PredeclaredId = False
Attribute VB_Exposed = False
Public WithEvents appevent As Application
Attribute appevent.VB_VarHelpID = -1
Private Sub appevent_WorkbookAfterSave(ByVal Wb As Workbook, ByVal Success As Boolean)
MsgBox Wb.Name & "Saved"
End Sub
Private Sub appevent_WorkbookBeforeSave(ByVal Wb As Workbook, ByVal SaveAsUI As Boolean, Cancel As Boolean)
MsgBox Wb.Name & "Before Save"
End Sub
这是vba.xlsm的工作簿
Private Sub Workbook_Open()
Dim objSaveEvent As New saveEvent
Set objSaveEvent.appevent = Application
End Sub
1条答案
按热度按时间w8f9ii691#
如果要捕获应用程序事件,但执行了以下操作:
...那么一旦
Workbook_Open
完成,您的objSaveEvent
对象就会超出作用域并消失,因此不会截获任何事件。你需要这样的东西...
在“vba.xlsm”的
ThisWorkbook
模块中:类模块
saveEvent
: