我想检查是否已安装并引用了外接程序。下面的代码检查外接程序是否安装。我如何检查它是否在excel中被引用。
按引用是指"Tools> Addins> Addins Dailog"框>如果安装了Addins>检查是否选中了特定名称的插件。
我希望没有任何循环。
Sub Demo()
Dim b As Boolean
b = CheckAddin("Solver add-in")
MsgBox "Solver is " & IIf(b, "", "not ") & "installed"
End Sub
Function CheckAddin(s As String) As Boolean
Dim x As Variant
On Error Resume Next
x = AddIns(s).Installed
On Error Goto 0
If IsEmpty(x) Then
CheckAddin = False
Else
CheckAddin = True
End If
End Function
Sub Sample()
Dim wbAddin As Workbook
On Error Resume Next
Set wbAddin = Workbooks(AddIns("My Addin").Name)
If Err.Number <> 0 Then
On Error GoTo 0
'Set wbAddin = Workbooks.Open(AddIns("My Addin").FullName)
Debug.Print "Not Referenced"
Else
Debug.Print "Referenced"
End If
End Sub
您需要测试插件是否打开,就像任何其他工作区一样。如果加载了插件,将返回True:
Function AddinIsLoaded(AddinName As String) As Boolean
On Error Resume Next
AddinIsLoaded = Len(Workbooks(AddIns(AddinName).Name).Name) > 0
End Function
例如:Sub Test
Debug.Print AddinIsLoaded("Solver add-in")
End Sub
我遇到了一个问题,即使当函数返回True时,我仍然会在尝试使用该插件时得到一个错误。结果是,插件可以安装,但不能"打开"。所以,除了检查插件之外,我还检查了插件文件是否打开。如果没有,我打开插件。在这里看到我的问题和答案:
Excel VBA检查是否安装了插件但未打开