如何创建特定于Excel的工作簿添加

时间:2010-06-17 19:15:34

标签: com excel-vba vsto excel-2007 vba

我想创建一个excel Add,其中会创建一些额外的工具栏和菜单按钮。 但我希望只在打开特定工作簿时加载此插件。如果任何其他工作簿打开,我不想加载Addin。

我想知道解决此问题的可行方法是什么,以及实现此Add in(XLA或VSTO或COM Addin)的最佳方法是什么。

我不希望用户知道我的Addin路径,加载/初始化插件所需的VbA代码。

3 个答案:

答案 0 :(得分:7)

这听起来像是VSTO Document项目的一个好例子;与扩展整个应用程序的加载项不同,因此适用于任何打开的文档,VSTO文档项目是特定文档的自定义,附加了额外的代码。

答案 1 :(得分:4)

在开头创建工具栏,但将工具栏可见性设置为false。使用AddIn.Application.WorkbookOpen事件的事件处理程序捕获正在打开的工作簿,并确定工作簿是否是您想要的特定工作簿。此时,您可以设置工具栏的可见性。

如果活动工作簿不是特定工作簿,您还可以捕获AddIn.Application.WorkbookActivate事件并再次隐藏工具栏。

请记住在ThisAddIn级别声明一个成员变量以保持对工具栏的引用!

答案 2 :(得分:2)

如果您真的只想在某个工作簿打开时加载插件,为什么不在相关工作簿的Open事件中加载它

' code in the ThisWorkbook module

Private Sub Workbook_Open()

Dim wb As Workbook

    On Error Resume Next
    Set wb = Workbooks("myAddin.xla")
    If wb Is Nothing Then
        Set wb = Application.Workbooks.Open("c:\path\myAddin.xls")
    End If

End Sub

或者,任何其他工作簿或插件都可以包含代码以捕获Excel应用程序级别事件,例如Workbook.Open,如果新打开的工作的名称是您感兴趣的工作,则执行任何操作,即加载Addin