Como carregar um Excel adicionar e usar um tipo definido pelo usuário daquele adicionar?

2

Em add_in.xlam tenho:

Type Quantity
    i As Integer
end type

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

Em outra pasta de trabalho, eu faço:

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

Isso não funciona. O Excel reclama que o tipo definido pelo usuário ainda não foi definido.

Então, como fazer você declara variáveis de um tipo definido em um add-in?

    
por Anton Lahti 13.09.2013 / 14:40

2 respostas

1

A única maneira que eu consegui fazer para que algo desse tipo funcionasse é seguir as instruções nesta página: link Especificamente, você tem que dar um novo nome ao nome do projeto vba, e você precisa adicioná-lo como referência, usando esse nome. O site explica melhor.

Outra página discutindo a mesma coisa: chamando add-in -functions-from-vba

    
por 17.09.2013 / 22:45
0

Isso funcionou para mim sem adicionar manualmente a referência:

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

Eu lutei porque o AddIns.Add precisa de um caminho absoluto ... Mas parece funcionar!

Editar: Eu também precisava usar e ligar:

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

Fonte: link

    
por 09.06.2016 / 14:20