Excel VBA不';无法识别手动打开的.xlam加载项
我有一个excel加载项,在Excel VBA不';无法识别手动打开的.xlam加载项,excel,vba,add-in,Excel,Vba,Add In,我有一个excel加载项,在应用程序中找不到它。AddIns。我通过转到文件->打开->浏览到addin.xlam手动打开外接程序。是否需要通过编程方式添加外接程序才能显示在应用程序中。外接程序 编辑 @法迪 我在这两个打印函数中都没有看到我的加载项。在第一个示例中,它只打印当前工作簿的名称,仅此而已。第二个插件成功打印出我的其他10个以编程方式添加的外接程序,但不是手动添加的外接程序 Sub MsgWorkbooks() Dim s As String For Each wb
应用程序中找不到它。AddIns
。我通过转到文件->打开->浏览到addin.xlam
手动打开外接程序。是否需要通过编程方式添加外接程序才能显示在应用程序中。外接程序
编辑
@法迪
我在这两个打印函数中都没有看到我的加载项。在第一个示例中,它只打印当前工作簿的名称,仅此而已。第二个插件成功打印出我的其他10个以编程方式添加的外接程序,但不是手动添加的外接程序
Sub MsgWorkbooks()
Dim s As String
For Each wb In Workbooks
s = s + app.Name
Next wb
MsgBox s
End Sub
Sub MsgAddIns()
Dim s As String
For Each app In Application.AddIns
s = s + app.Name
Next app
MsgBox s
End Sub
也许您需要安装它:
Sub InstallAddIn()
Dim AI As Excel.AddIn
Set AI = Application.AddIns.Add(Filename:="d:\addin.xlam") 'change the addin fullname
AI.Installed = True
End Sub
更多信息
正如DougGlancy所说,我们可以检查该插件是否像任何普通工作簿一样可用。所以我们可以使用这个函数:
Function IsAddinLoaded(adName As String) As Boolean
Dim addinWB As Workbook
On Error Resume Next
Set addinWB = Workbooks(adName)
If Err = 0 Then IsAddinLoaded = True
On Error GoTo 0
End Function
要测试:
Sub Test()
if IsAddinLoaded("addin.xlam") = true Then ' change the name of addin
msgbox "Addin is loaded"
Else
msgbox "Addin not loaded"
End if
End Sub
我没有时间测试,但我确信答案是肯定的。我认为
Application.Addins
表示Addins对话框中的addin集合。事实上,MSDN对它的定义几乎是一字不差的。这是手动添加的。你是说你添加了它吗。如果是这样的话,它应该是AddIns
集合的一部分,您的第二个子集应该显示它的名称。不,我的意思是文件>>打开>>(浏览并双击您的addin),这就是问题所在。我需要一个宏来运行外接程序中的函数,但我要确保先安装外接程序。所以我只需要一个if语句来检查addin是否可用。我希望无论加载项是手动打开的,还是以编程方式安装的,都能正常工作。您只需检查它是否已打开即可。打开的加载项是工作簿
集合的一部分,就像任何其他工作簿一样,无论是手动安装还是打开的。