如何加载 Excel 插件并使用该插件中的用户定义类型?

如何加载 Excel 插件并使用该插件中的用户定义类型?

附加组件我有:

Type Quantity
    i As Integer
end type

Sub show_quant(q as Quantiy)
    MsgBox(q.i)
end sub

在另一本工作簿中,我这样做:

Sub load_addin()
    Dim AI As Excel.AddIn
    Set AI = Application.AddIns.Add(Filename:="add_in.xlam")
    AI.Installed = True

    Dim q As Quantity
    show_quant(q)
End Sub

这不起作用。Excel 抱怨用户定义类型尚未定义。

又怎样您声明了在插件中定义的类型的变量吗?

答案1

我能够使这样的事情发挥作用的唯一方法是按照此页面上的说明进行操作:http://fontstuff.com/vba/vbatut08.htm具体来说,您必须为 vba 项目名称赋予一个新名称,并且需要使用该名称将其添加为引用。网站对此进行了更好的解释。

另一个页面讨论同一件事:从 VBA 调用附加函数

答案2

这对我来说很有用,无需手动添加参考:

Private Sub Workbook_Open()
    Dim success As Boolean
    Dim myAddIn As AddIn

    ' Load and install new XLAM
    Set myAddIn = AddIns.Add(Filename:=ActiveWorkbook.Path & "\path\to\myAddin.xlam")
    myAddIn.Installed = True

    ' Load known XLAM
    For Each myAddIn In AddIns
        If myAddIn.Name = "myAddin.xlam" Then
            myAddIn.Installed = False
            myAddIn.Installed = True
        End If
    Next
    Call AddReference(ActiveWorkbook.Path & "\path\to\myAddin.xlam")
End Sub

我很挣扎,因为 AddIns.Add 需要绝对路径......但它似乎有效!


编辑:我还需要使用和调用:

Sub AddReference(AddInPath As String)
    ThisWorkbook.VBProject.References.AddFromFile (AddInPath)
End Sub

来源: https://blogs.msdn.microsoft.com/accelerating_things/2010/09/16/loading-excel-add-ins-at-runtime/

相关内容