我需要帮助
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)
但是,如果名称未知,那么如何获取对此工作簿的引用,并且不能依赖用户的宏安全设置?