【问题标题】:VBA - automatically run when any workbook is openedVBA - 打开任何工作簿时自动运行
【发布时间】:2017-05-12 14:28:18
【问题描述】:

我希望每次打开任何工作簿时都运行我的 PERSONAL.XLAM 文件中的 Sub。以下工作,但仅在没有其他工作簿打开时打开工作簿时。

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

如何在打开其他工作簿时完成这项工作?

【问题讨论】:

  • 您可以在每个有问题的工作簿的 Auto_Open 子中编写代码吗?我不确定我是否完全理解您的问题......并确保您不会多次尝试打开它,您可以在此之前验证它是否已打开
  • 我希望宏在打开后立即在每个打开的工作簿上自动运行。会有数千个不同的工作簿,所以我无法将它们添加到每个工作簿中。
  • 您是否通过主工作簿打开这些工作簿?
  • 您不能:( Personal.xlam(或任何其他文件)无法看到其他文件何时打开。它仅适用于您第一次打开,因为此时打开了personal.xlam也是。唯一的方法是在所有工作簿中放置一个代码。

标签: vba excel


【解决方案1】:

根据来自 Masoud 的 commentthis is a great article。您可以在那里找到所有详细信息,但很简单,这就是您所需要的:

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 模块中。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-15
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多