VBA - 当任何工作簿打开时自动运行

3

我希望在打开任何工作簿时,我的PERSONAL.XLAM文件中的一个子程序能够运行。以下代码可以实现此功能,但仅当没有其他工作簿打开时才有效。

Private Sub Workbook_Open()
MsgBox "Hello."
End Sub

如何在打开其他工作簿时使其正常工作?


你可以在每个相关的工作簿的Auto_Open子程序中编写代码,也许?我不确定我完全理解你的问题...并且为了确保你不会尝试打开它多次,在这样做之前,你可以验证它是否已经打开。 - Seb
我想要一个宏,可以在每个打开的工作簿中自动运行。由于将有成千上万个不同的工作簿,所以我不能将它们添加到每个工作簿中。 - Robby
不,我手动打开它们。 - Robby
1
你不能:(Personal.xlam或任何其他文件)无法看到其他文件何时被打开。它仅在您第一次打开时为您工作,因为此时也打开了personal.xlam。唯一的方法是在所有工作簿中放置代码。 - Máté Juhász
4
http://www.cpearson.com/excel/AppEvent.aspx - M--
显示剩余2条评论
1个回答

4
根据Masoud的评论这篇文章是很好的。你可以在那里找到所有的细节,但简单来说,这就是你所需要的:
Private WithEvents App As Application

Private Sub Workbook_Open()
    Set App = Application
End Sub

Private Sub App_NewWorkbook(ByVal Wb As Workbook)
    MsgBox "New Workbook: " & Wb.Name
End Sub

将此代码放入ThisWorkbook模块中。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接