我需要帮助
- 了解如何迭代当前打开的 Excel 加载项文件(.xla)尚未使用 Excel 注册
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
循环访问加载项不会获取未注册的加载项:
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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)