На основании ссылки Шона Чешира на ответ Майклса:
«Я нашел пример в Службах разработки приложений JKP, первоначально найденный Лораном Лонгром. Одна оговорка объясняется ниже:
Недостаток этого трюкового метода в том, что на самом деле перерегистрируют функцию внутри используемой библиотеки DLL, которая может использоваться любой программой.
http://www.jkp-ads.com/Articles/RegisterUDF01.asp
Это решение только регистрирует / отменяет регистрацию UDF, но пользователю все равно придется сохранить книгу в формате .xlam и установить надстройку. Я использовал следующий код для автоматической установки текущей книги как надстройки Excel (если вы собираетесь обновлять надстройку, вам нужно будет добавить несколько сообщений об ошибках, чтобы определить, установлено ли надстройка уже).
Сохраняет текущую книгу в виде файла .xlam
sFile = Приложение.LibraryPath & "\" & "name_of_addin" & ".xlam"
ThisWorkbook.SaveAs sFile, 55
ThisWorkbook.IsAddin = True
Добавляет временную рабочую книгу
Workbooks.добавлять
Устанавливает надстройку
Установите oAddin = AddIns.Добавить (sFile, False)
oAddin.Установлено = True
Закрывает временную рабочую книгу
Workbooks (Workbooks.Count).близко
MsgBox («Установка прошла успешно. Пожалуйста, закройте Excel и перезапустите. ")
Закрывает книгу без сохранения
Рабочие книги (sFirstFile).Закрыть Ложь
Ссылка еще жива.