Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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附加模块can';t自动打开参考工作表_Vba_Excel - Fatal编程技术网

VBA附加模块can';t自动打开参考工作表

VBA附加模块can';t自动打开参考工作表,vba,excel,Vba,Excel,我有一个excel加载项,希望它在打开模板时运行某些宏。如果我打开excel,然后手动运行auto_open sub,但抛出“运行时错误9”,则运行正常。打开excel时下标超出范围 外接程序似乎正在加载并试图在加载模板之前运行,因此在尝试引用工作簿中的特定工作表时,它找不到任何内容 具体来说,错误出现在 Set shtData = Workbooks("Example_Template.xlsm").Worksheets("Test") 加载工作表后,如何强制自动打开宏运行 我的自动打开代码

我有一个excel加载项,希望它在打开模板时运行某些宏。如果我打开excel,然后手动运行auto_open sub,但抛出“运行时错误9”,则运行正常。打开excel时下标超出范围

外接程序似乎正在加载并试图在加载模板之前运行,因此在尝试引用工作簿中的特定工作表时,它找不到任何内容

具体来说,错误出现在

Set shtData = Workbooks("Example_Template.xlsm").Worksheets("Test")
加载工作表后,如何强制自动打开宏运行

我的自动打开代码是:

Sub Auto_Open()
   Set clsAppEvents = New clsApplicationEvents

   Application.Run "PerformanceOpen"

End Sub
我尝试运行的宏包含:

Private Sub PerformanceOpen()

Dim shtData As Worksheet

Set shtData = Workbooks("Example_Template.xlsm").Worksheets("Test")
shtData.Activate
工作表完成后,如何强制运行auto_open宏 装载的

你不能。
Auto_Open
宏专门用于Excel启动后,在任何工作簿可用之前立即运行


PerformanceOpen中的代码需要放在工作簿\打开事件中。它可以是特定工作簿的打开事件,也可以研究应用程序级事件。这将允许您在打开任何工作簿或添加新工作簿时运行代码。

好的,谢谢-我可以将其作为特定工作簿的打开事件,同时将代码保留在外接程序中而不是工作簿本身中吗?如果是这样的话,我该怎么做呢?是的,正如我提到的,您可以编写代码,在打开任何工作簿时运行,然后检查书的名称。不过我会质疑你的方法。外接程序用于向Excel添加其他功能。如果它正在等待打开另一个特定工作簿,则它不再是外接程序。祝你好运;)是的,我显然更愿意把它作为一个简单的工作簿宏,但由于我无法控制的原因,它只能在外接程序中工作。。。谢谢你的帮助!