【问题标题】:Excel VBA doesn't recognize manually opened .xlam add-inExcel VBA 无法识别手动打开的 .xlam 加载项
【发布时间】:2016-01-20 20:04:25
【问题描述】:

我有一个在 Application.AddIns 中找不到的 excel 加载项。我通过转到文件 -> 打开 -> 浏览到 addin.xlam 来手动打开加载项。是否需要以编程方式添加插件才能显示在 Application.AddIns 中?

编辑

@Fadi

我在这些打印功能中都没有看到我的插件。在第一个中,它只打印我当前工作簿的名称,仅此而已。第二个成功打印出我的其他 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

【问题讨论】:

  • 我没有时间测试,但我确信答案是肯定的。我认为Application.Addins 代表插件对话框中的插件集合。事实上,这几乎是 MSDN 对它的定义。
  • 手动添加的你的意思是添加like this。如果是这样,它应该是 AddIns 集合的一部分,并且您的第二个子应该显示它的名称。
  • 不,我的意思是文件>>打开>>(浏览并双击您的插件)

标签: excel vba add-in


【解决方案1】:

也许你需要安装它:

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

更多信息here

作为 Doug Glancy 的评论,我们可以像任何普通工作簿一样检查插件是否可用。所以我们可以使用这个函数:

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

【讨论】:

  • 就是这样。我想要一个从插件运行函数的宏,但我想确保首先安装插件。所以我只需要一个 if 语句来检查插件是否可用。无论插件是手动打开还是以编程方式安装,我都希望它能够正常工作。
  • 你可以检查它是否打开。一个打开的插件是Workbooks 集合的一部分,就像任何其他工作簿一样,无论是安装还是手动打开。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-24
  • 1970-01-01
  • 1970-01-01
  • 2021-03-27
相关资源
最近更新 更多