Я написал программу установки (в VBA) для установки или переустановки надстройки Excel .xlam, включая изменение места установки, если надстройка уже установлена.
Надстройка (назовем ее «MyAddin») предоставляет функции UDF нескольким пользователям.Из-за проблем с пользовательскими функциями VBA и ссылками на книги (задокументировано в другом месте - Путь к UDF надстройки Excel * ), мы устанавливаем надстройку в общее расположение C: \ ExcelAddins \ MyAddin \ для всех пользователей вместо%AppData% \ Microsoft \ AddIns \
Dim oAddInOld As Excel.AddIn
Dim oAddInNew As Excel.AddIn
Dim FSO as new scripting.FileSystemObject
const srcePath as string = "G:\Repository\MyAddin.xlam"
const destPath as string = "C:\ExcelAddins\MyAddin\MyAddin.xlam"
const destFldr as string = "C:\ExcelAddins\MyAddin"
const addinName as string = "MyAddin.clam"
' iterated through installed addins to find already installed
For each oAddInOld In Application.AddIns
If oAddInOld.name = addinName then
oAddInOld.Installed = False
'Even attempt to nuke it from the registry.
' Code not included, but is working
' has some smarts around identifying which OPEN item
' corresponds to this addin.
' oReg.DeleteValue HKEY_CURRENT_USER, _
' "SOFTWARE\Microsoft\Office\15.0\Excel\Options", "OPEN1"
DeleteAddinFromRegistry addinName
end if
Next oAddInld
'Create the new addin folder and copy the new version there
FSO.CreateFolder destFldr '(actual code is a little smarter)
FSO.CopyFile srcePath, destPath
'Install the new addin in the new folder (Tried CopyFile:=True and CopyFile:=False)
Set oAddIn = Application.AddIns.Add(destPath , CopyFile:=False)
'Enable the addin
oAddIn.Installed = True
MsgBox "Addin Installed. Please save your work and restart excel"
Программа установки работает нормально, если надстройка уже не установлена в другом месте (например,% AppData% \ Microsoft \ AddIns).В этом случае местоположение не будет изменено автоматически.Пользователь должен выбрать кнопку «Обзор» в диалоговом окне «Надстройки Excel» и перейти к новому расположению, то есть установщик по сути является прославленным копировщиком файлов.
Есть ли способ полностью автоматизировать этот процесс без ручного вмешательства?Надстройка была развернута во всем мире, и большинство пользователей уже имеют ее в старом расположении% AppData% \ Microsoft \ AddIns.
ps VBScript глобально отключен.Иначе у меня было бы решение.