Константа надстройки MS Word имеет разные значения при запуске (AutoExec) - PullRequest
1 голос
/ 15 октября 2019

Я разрабатываю надстройки 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», а другой - с «Мое имя меню». В результате мое меню не чистое: кнопки дублируются несколько раз!

Может кто-нибудь помочь мне решить эту проблему? Большое спасибо

...