2013-08-13 6 views
0

Я преобразовал проект, управляемый VBA, из обычного листа Excel 2010 в надстройку и хотел бы получить имя проекта VBA с помощью программного обеспечения.Excel VBA - получить имя проекта надстройки

(у меня есть «О ...» кнопка, что у меня есть раздражающая тенденция забывать обновлять, когда проект будет обновлен, и хочет посмотреть название проекта VBA для использования в MsgBox.)

когда код находится в форме листа, этот вызов в моей About... кнопка обратного вызова рутинных работ просто отлично:

Application.VBE.ActiveVBProject.Name

Однако, когда код в надстройке в формате, этот вызов возвращает имя VBA проект для текущего листа (то есть VBAProject), а не надстройка.

Есть ли не запутанный метод получения имени исполняемого проекта надстройки? Я вижу, что есть некоторые методы, которые перечисляют надстройки, и я мог бы искать их один за другим для имени, которое соответствует шаблону, но это кажется громоздким.

ответ

3

Как насчет ThisWorkbook.VBproject.Name?

+0

Это похоже на трюк. Кажется странным (для меня), что надстройка понимает, что это другая книга, но активный проект VB, вызванный моей первой попыткой, не выполняется там, где выполняется выполнение. –

+0

Извините, я не понимаю, что кажется странным, но я попробую уточнить. 'ThisWorkbook' всегда ссылается на книгу, в которой находится код. Если он закодирован внутри addin, он будет ссылаться на свойства этого addin/workbook. –

+0

Извините - 'ThisWorkbook' ясен. Я не уверен, почему VBE.ActiveProject указывал, откуда происходит выполнение. –

Смежные вопросы