相关疑难解决方法(0)

迭代未注册的加载项(.xla)

我需要帮助

  • 弄清楚如何使用菜单路径迭代尚未在Excel中注册的当前打开的Excel加载项文件(.xla)Tools > Add-ins.
  • 更具体地说,我对任何未出现在加载项对话框中的工作簿感兴趣,但有ThisWorkbook.IsAddin = True.

证明问题:

尝试按如下方式遍历工作簿不会使工作簿具有.AddIn = True:

Dim book As Excel.Workbook

For Each book In Application.Workbooks
    Debug.Print book.Name
Next book
Run Code Online (Sandbox Code Playgroud)

通过加载项循环不会获得未注册的加载项:

Dim addin As Excel.AddIn

For Each addin In Application.AddIns
    Debug.Print addin.Name
Next addin
Run Code Online (Sandbox Code Playgroud)

循环通过VBProjects集合可以正常工作,但前提是用户在宏安全设置中具有对Visual Basic项目的特别可信访问权限 - 这很少:

Dim vbproj As Object

For Each vbproj In Application.VBE.VBProjects
    Debug.Print vbproj.Filename
Next vbproj
Run Code Online (Sandbox Code Playgroud)

但是,如果已知工作簿的名称,则无论是否为加载项,都可以直接引用工作簿:

Dim book As Excel.Workbook
Set book = Application.Workbooks("add-in.xla")
Run Code Online (Sandbox Code Playgroud)

但是,如果名称未知,那么如何获取对此工作簿的引用,并且不能依赖用户的宏安全设置?

excel vba add-in excel-vba excel-addins

9
推荐指数
1
解决办法
3923
查看次数

标签 统计

add-in ×1

excel ×1

excel-addins ×1

excel-vba ×1

vba ×1