Тема: Создание своих панели инструментов и меню
Уважаемые эксперты!
Помогите разобраться в следующем - есть код (приведен ниже). На моем компьютере добился, что он нормально работает и дома и на работе. Попробовал запускать его на других компьютерах, получал абслютно разные результаты. На одном было создано два одинаковых меню, на другом меню было одно, но панели инструментов не создалось вообще. В чем может быть проблема, может кто сможет увидеть???
Sub AutoExec()
' Создание новой панели инструментов
Dim cbar As CommandBar
Dim vidimost As Boolean
For Each cbar In CommandBars
If cbar.Name = "Моя_панель" Then GoTo startmenu:
Next
'Создание панель управления
Set cbar = CommandBars.Add("Моя_панель", msoBarTop)
cbar.Enabled = True
If vidimost Then CommandBars("Моя_панель").Visible = True Else CommandBars("Моя_панель").Visible = False
'Размещение первой кнопки на панели инструментов
Dim But1 As CommandBarControl
Set But1 = cbar.Controls.Add(msoControlButton)
But1.Caption = "Первый макрос" 'надпись на кнопке
But1.FaceId = 13 ' Номер иконки на кнопке, можно изменять на другую
But1.OnAction = "Процедура 1"
'Размещение второй кнопки на панели инструментов
Dim But2 As CommandBarControl
Set But2 = cbar.Controls.Add(msoControlButton)
But2.Caption = "Продолжение..." ' Изменить то, что в кавычках, на нужное
But2.FaceId = 136
But2.OnAction = "" ' Изменить на имя процедуры, которую нужно выполнять
'Размещение третьей кнопки на панели инструментов
Dim But3 As CommandBarControl
Set But3 = cbar.Controls.Add(msoControlButton)
But3.Caption = "...следует" ' Изменить то, что в кавычках, на нужное
But3.FaceId = 29 ' Номер иконки на кнопке, можно изменять на другую
But3.OnAction = "" ' Изменить на имя процедуры, которую нужно выполнять
'И так далее для ButN, где N - номер добавляемой кнопки по порядку
startmenu:
'Создание нового меню
' Проверка, есть ли такой пункт в стандартном меню
Dim cBarCont As CommandBarControl
For Each cBarCont In CommandBars(41).Controls
If cBarCont.Caption = "Мое_меню" Then ' поиск в коллекции
cBarCont.Delete 'удаление найденного
End If
Next
' Создание меню
Dim CBar1 As CommandBar
Set CBar1 = CommandBars(41)
CBar1.Enabled = True
CBar1.Visible = True
Dim Menu1 As CommandBarPopup
Dim SubMenu1 As CommandBarPopup
Dim SubMenu1Item1 As CommandBarButton
Dim SubMenu1Item2 As CommandBarButton
Dim SubMenu1Item3 As CommandBarButton
'Создание верхнего меню
Set Menu1 = CBar1.Controls.Add(msoControlPopup)
Menu1.Caption = "Мое_меню"
' Создание вложенного меню
Set SubMenu1 = Menu1.Controls.Add(msoControlPopup)
SubMenu1.Caption = "Макросы"
'Создание элемента во вложенном меню и назначение ему процедуры
Set SubMenu1Item1 = SubMenu1.Controls.Add(msoControlButton)
Set SubMenu1Item2 = SubMenu1.Controls.Add(msoControlButton)
Set SubMenu1Item3 = SubMenu1.Controls.Add(msoControlButton)
SubMenu1Item1.FaceId = 13
SubMenu1Item2.FaceId = 136
SubMenu1Item3.FaceId = 29
SubMenu1Item1.Caption = "Первый макрос"
SubMenu1Item2.Caption = "Продолжение..."
SubMenu1Item3.Caption = "...следует"
SubMenu1Item1.OnAction = "Процедура 1"
SubMenu1Item2.OnAction = "" ' имя будущей процедуры
SubMenu1Item3.OnAction = "" ' имя будущей процедуры
End Sub
Данный код размещаю в файле, который лежит в папке автозагрузки для ворда и подключен как надстройка.
Уже голову сломал, не могу понять, что тут не так???