Excel VBA: получение объекта книги из справочной книги надстройки - PullRequest
0 голосов
/ 16 октября 2018

Я могу создать надстройку кода, установив для свойства книги .IsAddin значение True и сохранив его в формате * xlam.

Затем я могу добавить его в качестве ссылки налюбая другая рабочая книга как таковая:

Sub Test()
    Dim wb As Workbook
    Set wb = Workbooks.Add
    wb.VBProject.References.AddFromFile "PathToAddIn.xlam"
End Sub

После этого процедуры кода надстройки будут доступны для вызова из основной рабочей книги wb.

Однако что если при запуске процедуры вНадстройка, я хочу получить объект книги из книги, которая ссылается на надстройку ?

Например, что-то вроде этого:

Sub ThisProcedureIsWithinTheAddIn()
    Debug.Print ThisWorkbook.Path ' Returns the path of this add-in (xlam) file
    Dim ReferringWorkbook As Workbook
    Set ReferringWorkbook = ThisWorkbook... ' How does one reference the caller/referrer?
End Sub

ДляЦель этого вопроса - предположить, что выполнение кода находится в совершенно отдельном потоке, а объект wb (как он был изначально создан) больше не существует как переменная.На самом деле, в моем приложении wb был создан в совершенно отдельном новом приложении Excel. Приложение .

. Я понимаю, что могу просмотреть каждую книгу в приложении с помощью For Each wb.В Application.Workbooks и найдите соответствующий критерий соответствия.Но это грязное решение.Есть ли что-нибудь более элегантное?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...