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