Excel VBA检查是否安装了Addin但未打开

我有下面的代码来检查是否在从当前上下文中调用该Addin的脚本之前安装/可用插件:

Function IsAddinEnabled(addinName as string) As Boolean IsAddinEnabled = True Dim myAddin As addin On Error GoTo NotExists Set myAddin = Application.AddIns2(addinName) If myAddin.IsOpen = False Then ' this logic is my workaround myAddin.Installed = False 'uninstall myAddin.Installed = True ' install to "Open" the addin Else myAddin.Installed = True 'redundant End If Exit Function NotExists: IsAddinEnabled = False End Function 

出现这个问题的时候:

myAddin.IsOpen = false我不得不添加这个逻辑来重新安装插件。 卸载并重新安装插件是一个轻微的麻烦/放缓。 有没有办法强制和Addin“打开”,而无需重新安装插件?

更简单的方法是检查工作簿集合中是否存在插件。

如果没有,你可以打开它,就好像是一本工作簿,假设你知道path。

(不需要打扰插件收集)

Per @Charles Williams

这是我用过的方法:

 Function IsAddinEnabled(addinName as string) As Boolean IsAddinEnabled = True Dim myAddin As addin On Error GoTo NotExists Set myAddin = Application.AddIns2(addinName) If myAddin.IsOpen = False Then ' this logic is my workaround Workbooks.Open myAddin.Path & "\" & myAddin.Name 'open the addin, if it's not open Else myAddin.Installed = True 'redundant End If Exit Function NotExists: IsAddinEnabled = False End Function