Мне нужна помощь в
- выяснение, как перебирать открытые в настоящее время файлы надстроек 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 в настройках Macro Security - что редко бывает:
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")
Но как, черт возьми, получить ссылку на эту книгу, если имя неизвестно и на параметры безопасности макросов пользователя нельзя положиться?