Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VBA-打开任何工作簿时自动运行_Vba_Excel - Fatal编程技术网

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

VBA-打开任何工作簿时自动运行,vba,excel,Vba,Excel,我希望每次打开任何工作簿时都能在PERSONAL.XLAM文件中运行一个子文件。以下操作有效,但仅在没有打开其他工作簿的情况下打开工作簿时有效 Private Sub Workbook_Open() MsgBox "Hello." End Sub 如何在打开其他工作簿时完成此工作?根据来自Masoud的。您可以在这里找到所有细节,但简单地说,这就是您所需要的: Private WithEvents App As Application Private Sub Workbook_Open()

我希望每次打开任何工作簿时都能在PERSONAL.XLAM文件中运行一个子文件。以下操作有效,但仅在没有打开其他工作簿的情况下打开工作簿时有效

Private Sub Workbook_Open()
MsgBox "Hello."
End Sub
如何在打开其他工作簿时完成此工作?

根据来自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模块中

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