Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/23.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
Excel 打开特定工作簿时运行宏_Excel_Vba - Fatal编程技术网

Excel 打开特定工作簿时运行宏

Excel 打开特定工作簿时运行宏,excel,vba,Excel,Vba,以下是我的情况:我打开了工作簿“MyWorkbook”,其中有一个名为“MyMacro”的宏,该宏设置为单击按钮运行,在下载并打开名为“Analysis.xls”的文件后,我使用该宏 当我打开名为“Analysis.xls”的文件时,有没有一种方法可以让“MyMacro”运行,而不必单击按钮或手动调用宏来执行操作?这应该可以做到(在类模块中执行此操作或在MyWorkbook中的此工作簿中执行此操作) 您可以在事件上运行宏。我知道,但我希望“MyWorkbook”中的宏在我打开“Analysis”

以下是我的情况:我打开了工作簿“MyWorkbook”,其中有一个名为“MyMacro”的宏,该宏设置为单击按钮运行,在下载并打开名为“Analysis.xls”的文件后,我使用该宏

当我打开名为“Analysis.xls”的文件时,有没有一种方法可以让“MyMacro”运行,而不必单击按钮或手动调用宏来执行操作?

这应该可以做到(在类模块中执行此操作或在MyWorkbook中的此工作簿中执行此操作)


您可以在事件上运行宏。我知道,但我希望“MyWorkbook”中的宏在我打开“Analysis”时运行,而不是在我打开“MyWorkbook”时运行。创建一个外接程序并在WorkbookOpen事件上运行它,告诉它检查工作簿名称,如果其分析结果正确,则调用宏。所以我只是将其粘贴到类模块中?或者我应该把不同的东西放在一个单独的模块上吗?没关系,我对类模块做了一些研究,在这里找到了答案:
Private WithEvents app As Application
Private Sub Workbook_Open()
  Set app = Application
End Sub

Private Sub app_WorkbookOpen(ByVal Wb as Workbook)
  If Wb.Name = "Analysis.xls" Then
    'run your macro here
  End If
End Sub