jev*_*lio 9 excel vba add-in excel-vba excel-addins
我需要帮助
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)
但是,如果名称未知,那么如何获取对此工作簿的引用,并且不能依赖用户的宏安全设置?
Chr*_* C. 10
从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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3923 次 |
| 最近记录: |