2

В add_in.xlam у меня есть:

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 жалуется, что пользовательский тип еще не определен.

Так как же объявлять переменные типа , определенного в качестве дополнения в?

2 ответа2

1

Единственный способ заставить меня работать подобным образом - это следовать инструкциям на этой странице: http://fontstuff.com/vba/vbatut08.htm В частности, вам нужно дать имя проекту vba новое имя, и вам нужно добавить его в качестве ссылки, используя это имя. Сайт объясняет это лучше.

Другая страница, обсуждающая то же самое: call-add-in-functions-from-vba

0

Это работало для меня без добавления ссылки вручную:

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

Я боролся, потому что надстройки.Добавить нужен абсолютный путь ... Но это похоже на работу!


Изменить: мне также нужно было использовать и позвонить:

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/

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .