Я разрабатываю надстройки Word, которые настраивают ленту.
На самом деле у меня есть 2 надстройки. Первый находится на локальной машине. Он содержит подпрограмму AutoExec для загрузки второй надстройки, находящейся на сетевом диске:
Private Const AddInPath As String = "\\path\to\add\in"
Public Sub AutoExec()
AddIns(AddInPath).Installed = True
Call AddMenu
End Sub
Сетевая надстройка сохраняет имя меню в частной переменной const:
Private Const MENUNAME As String = "My Menu Name"
И он содержит подпрограмму, которая добавляет меню:
Public Sub AddMenu()
Dim menu As CommandBar
' Ugly workaround for multiple menus
On Error GoTo Handler
While True
Application.CommandBars(TOOLBAR_NAME).Delete
Wend
Handler:
'Just go on
Set menu = Application.CommandBars.Add(MENUNAME)
With menu
' [Do menu config]
End with
End Sub
Когда Word запускается, он запускает AutoExec Sub несколько раз и добавляет меню несколько раз (я не понял, почему ... ). Поэтому в качестве обходного пути я удаляю меню до тех пор, пока их больше не будет (см. Раздел «Уродливый обходной путь» выше).
Моя проблема заключается в том, что изначально меню называлось «MyMenuName». Затем я переименовал его в «Имя моего меню», и оказалось, что Word выполняет фрагменты кода с «MyMenuName», а другой - с «Мое имя меню». В результате мое меню не чистое: кнопки дублируются несколько раз!
Может кто-нибудь помочь мне решить эту проблему? Большое спасибо