2013-07-30 29 views
0

我有一个Excel加载项,我希望在打开模板时运行某些宏。如果我打开excel然后手动运行auto_open sub,但运行良好,但在打开excel时会抛出'运行时错误9.下标超出范围'。VBA加载项无法在自动打开时引用工作表

看起来像加载中加载并试图在模板加载之前运行,以便在尝试引用工作簿中的特定工作表时无法找到任何内容。

具体的错误出现在

Set shtData = Workbooks("Example_Template.xlsm").Worksheets("Test") 

我如何可以强制Auto_Open宏一旦工作表加载运行?

我的汽车开放代码是:

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 

回答

1

我如何可以强制Auto_Open宏运行,一旦工作表 装?

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

PerformanceOpen中的代码需要放在Workbook_Open事件中。它可以是特定工作簿的打开事件,也可以学习cpearson's page关于应用程序级别事件。这将允许您在打开任何工作簿或添加新工作簿时运行代码。

+0

好的,谢谢 - 我可以将它作为特定工作簿的开放事件,同时将代码保存在加载项中而不是工作簿本身中?如果是这样,我会怎么做呢? – db579

+0

是的,正如我所提到的,您可以编写在任何*工作簿打开时运行的代码,然后检查书的名称。我会质疑你的做法。加载项旨在为Excel添加其他功能。如果它正在等待打开另一个特定工作簿,那么IMO不再是加载项。祝你好运;) –

+0

是的,我显然更喜欢只是保持它作为一个简单的工作簿宏,但由于我的控制原因,它只会在加载项中工作...感谢您的帮助! – db579

相关问题