Я хотел бы создать Excel Add, на котором создает некоторые дополнительные панели инструментов и Кнопки меню. Но я хочу, чтобы это дополнение загрузилось только, когда определенная рабочая книга открыта. Я не хочу загружать Дополнение, если anyother рабочая книга открыта.
Я хотел бы знать то, что является возможными способами решить эту проблему и что является лучшим подходом для реализации, это Включает (XLA или VSTO или COM-надстройка).
Я не хочу, чтобы пользователь знал мой Дополнительный путь, код VbA, требуемый загрузить/Инициализировать дополнение.
Звучит как хороший случай для проекта документа VSTO; В отличие от надстроек, которые расширяют все приложение и как таковые применяются к любому открытому документу, проект документа VSTO представляет собой настройку определенного документа, к которому прикреплен дополнительный код.
Если вы действительно хотите, чтобы аддин загружался только при открытии определенной рабочей книги, почему бы не загрузить его в событие Open соответствующей рабочей книги
' code in the ThisWorkbook module
Private Sub Workbook_Open()
Dim wb As Workbook
On Error Resume Next
Set wb = Workbooks("myAddin.xla")
If wb Is Nothing Then
Set wb = Application.Workbooks.Open("c:\path\myAddin.xls")
End If
End Sub
В качестве альтернативы, любая другая рабочая книга или аддин могут включать код для перехвата событий уровня приложения Excel, таких как Workbook.Open, и если имя вновь открытой работы является тем, которое вас интересует, делать что угодно, то есть загружать аддин
Создайте панель инструментов в начале, но установите для ее видимости значение false. Захватите открываемую книгу с помощью обработчика событий для события AddIn.Application.WorkbookOpen и определите, является ли книга той, которую вы хотите. На этом этапе вы можете установить видимость панели инструментов.
Вы также можете перехватить событие AddIn.Application.WorkbookActivate и снова скрыть панель инструментов, если активная книга не является конкретной книгой.
Не забудьте объявить переменную-член на уровне ThisAddIn, чтобы сохранить ссылку на панель инструментов!