Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA不';无法识别手动打开的.xlam加载项_Excel_Vba_Add In - Fatal编程技术网

Excel VBA不';无法识别手动打开的.xlam加载项

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

我有一个excel加载项,在
应用程序中找不到它。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是否可用。我希望无论加载项是手动打开的,还是以编程方式安装的,都能正常工作。您只需检查它是否已打开即可。打开的加载项是
工作簿
集合的一部分,就像任何其他工作簿一样,无论是手动安装还是打开的。