VBA Run Надстройка с ленты

Я написал надстройку для Excel, и у меня есть пользовательская форма с двумя кнопками: Ok и Cancel. В "ОК" мои макросы вызываются и запускаются. При отмене закроет пользовательскую форму.

Мой вопрос: как сделать надстройку доступной на Панели инструментов надстроек в Excel, и будет ли моя пользовательская форма автоматически активироваться при нажатии на надстройку?

Спасибо!

2 ответа

Решение

Чтобы использовать старый код командной строки, он может быть таким простым, например:

Sub AddButton()
    Dim btn As CommandBarButton
    DeleteButton
    Set btn = Application.CommandBars(1).Controls.Add(Type:=msoControlButton)
    With btn
        .Caption = "some text"
        .OnAction = "'" & ThisWorkbook.Name & "'!macro_name"
        .Style = msoButtonCaption
        .Tag = "MyTag"
    End With
End Sub
Sub DeleteButton()
    Dim ctl As CommandBarControl
    For Each ctl In Application.CommandBars(1).Controls
        If ctl.Tag = "MyTag" Then ctl.Delete
    Next ctl

End Sub

вызовите AddButton из события Workbook_Open и обязательно очистите его в Workbook_BeforeClose.;) Итак, в модуле ThisWorkbook вашей надстройки:

Private Sub Workbook_Open()
AddButton
End Sub
Private Sub Workbook_BeforeClose(Cancel As Boolean)
DeleteButton
End Sub

Я только что обнаружил, как это сделать несколько дней назад!

  1. Загрузите редактор openxml
  2. В редакторе откройте файл с макросом, который вы хотите преобразовать в надстройку. 3 Вставьте деталь пользовательского интерфейса, выберите вариант Excel 2007.
  3. Нажмите на тип и напишите этот код:

    http://schemas.microsoft.com/office/2006/01/customui '>

с imageMso вы можете выбрать изображение вашей кнопки. Вы можете увидеть все доступные изображения.

  1. Нажмите Подтвердить, а затем Создать обратный вызов. Скопируйте код обратного вызова. Это будет выглядеть примерно так

    'Обратный вызов для Button1 onAction Sub callMyMacro(control As IRibbonControl) End Sub

  2. Сохраните издания в редакторе пользовательского интерфейса и закройте.

  3. Теперь откройте файл с макросом, вставьте новый модуль и вставьте код обратного вызова. В середине саба сделайте вызов вашему макросу.

    'Обратный вызов для Button1 onAction Sub callValidation(управление как IRibbonControl) Вызов myMacro End Sub

  4. Теперь вы должны видеть свои макросы на вкладке надстроек. Сохраните файл как AddIn, и вы готовы.

Другие вопросы по тегам