gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 19:41:40 25 4
gpt4 key购买 nike

我需要帮助

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

演示问题:

尝试按如下方式循环工作簿不会获取带有 .AddIn = True 的工作簿:

Dim book As Excel.Workbook

For Each book In Application.Workbooks
Debug.Print book.Name
Next book

循环加载项不会获取未注册的加载项:

Dim addin As Excel.AddIn

For Each addin In Application.AddIns
Debug.Print addin.Name
Next addin

循环遍历 VBProjects 集合是有效的,但前提是用户在宏安全设置中具有对 Visual Basic 项目的特别受信任的访问权限 - 这种情况很少见:

Dim vbproj As Object

For Each vbproj In Application.VBE.VBProjects
Debug.Print vbproj.Filename
Next vbproj

但是,如果知道工作簿的名称,则无论是否为外接程序,都可以直接引用该工作簿:

Dim book As Excel.Workbook
Set book = Application.Workbooks("add-in.xla")

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

最佳答案

从 Office 2010 开始,有一个新集合 .AddIns2,它与 .AddIns 相同,但还包含未注册的 .XLA 插件。

Dim a As AddIn
Dim w As Workbook

On Error Resume Next
With Application
For Each a In .AddIns2
If LCase(Right(a.name, 4)) = ".xla" Then
Set w = Nothing
Set w = .Workbooks(a.name)
If w Is Nothing Then
Set w = .Workbooks.Open(a.FullName)
End If
End If
Next
End With

关于vba - 迭代未注册的加载项 (.xla),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/287077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com