У меня есть таблица, содержащая макросы, которая помещает элемент меню в надстройки и удаляет его при закрытии. Это не работает, теперь я обновлен до Office 2016. Код для добавления находится в Workbook_Open:
Dim UtilityMenu As CommandBarControl, Level1 As CommandBarControl
Dim ctl As CommandBarControl, UTBar As CommandBar
Set UtilityMenu = Application.CommandBars(1).Controls.Add(Type:=msoControlPopup, Before:=8, temporary:=False)
UtilityMenu.Caption = MENUNAME
Set Level1 = UtilityMenu.Controls.Add(Type:=msoControlButton)
With Level1
.Caption = "&Ungroup"
.OnAction = "Ungroup"
.FaceId = 239
End With
и т.д.
Это только добавляет меню к открытому в настоящее время окну, даже если открыто несколько рабочих книг.
Код для закрытия:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Dim ctl As CommandBarControl
For Each ctl In Application.CommandBars(1).Controls
If ctl.Caption = MENUNAME Then ctl.Delete
Next
End Sub