Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Введение примеры по VBA.doc
Скачиваний:
13
Добавлен:
22.09.2019
Размер:
1.99 Mб
Скачать

Фрагмент таблицы идентификаторов встроенных команд меню

        Пример добавления команды проверки правописания Spelling в меню Проверкииз панели Головное меню:

      Set mySpell = CommandBars(«Головное меню»).Соntrols(«Проверки»)_.Controls.Add(Id:=2)

       Пример 61.Создать документ, в котором будут отключены все встроенные меню и создано собственное иерархическое меню. На верхнем уровне меню будет состоять из одного пункта. Оно будет включать два подменю, каждое из которых содержит по одной команде. Для реализации данных условий создаем простую форму, содержащую две кнопки: Создатьи Отмена(рис. 127). Первая кнопка отключает все панели открытого документа и создает собственное меню (рис. 127), вторая кнопка возвращает все панели на место (рис. 128).        Технология выполнения       1. Активизируйте приложение Word и создайте документ.       2. Перейдите в редактор VBA и создайте форму.       3. Создайте процедуру создания собственной панели.

      Option Explicit       Public Sub CreateCustomMenu()       Dim CstmBar As CommandBar       Dim CstmPopUpi As CommandBarPopup, CstmPopUp2 As CommandBarPopup       Dim CstmCtrl As CommandBarControl       Dim Exist As Boolean       'Выключаем все панели       For Each CstmBar In CommandBars       CstmBar.Enabled = False       Next CstmBar       'Создаем, включаем и делаем видимой собственную панель       Exist = False       For Each CstmBar In CommandBars       If CstmBar.Name = «Головное меню» Then       Exist = True       Exit For       End If       Next CstmBar       If Not Exist Then       Set CstmBar = CommandBars.Add(Name:="Головнoe меню", Position:=msoBarTop, MenuBar:=True, Temporary:=False)       End If       CstmBar.Enabled = True       CstmBar.Visible = True       'Добавляем меню на панель       Exist = False       For Each CstmCtrl In CstmBar.Controls       If CstmCtrl.Caption = «&Ввод документов» Then       Exist = True       Exit For       End If       Next CstmCtrl       If Not Exist Then       Set CstmCtrl = CstmBar.Controls.Add(Type:=msoControlPopup, Before:=1)       CstmCtrl.Caption = «&Ввод документов»       'Добавляем две команды подменю       Set CstmPopUpi =       CstmCtrl.Controls.Add(Type:=msoControlPopup)       CstmPopUpi.Caption = « о движении товаров»       Set CstmPopUp2 =       CstmCtrl.Controls.Add(Type:=msoControlPopup)       CstmPopUp2.Caption = « финансовых»       'Добавляем команду в каждое подменю       Set CstmCtrl =       CstmPopUpi.Controls.Add(Type:=msoControlButton)       CstmCtrl.Caption = «Накладная»       CstmCtrl.OnAction = «Module1.Invoice»       Set CstmCtrl =       CstmPopUp2.Controls.Add(Type:=msoControlButton)       CstmCtrl.Caption = «Счет»       CstmCtrl.OnAction = «Module1.Account»       End If       End Sub

       Пояснения к процедуре.Вначале, используя свойство Enabled, были отключены все панели. Затем было сформировано головное меню с двумя подменю и командами, содержащее всего один пункт. Обратите внимание: перед добавлением нового пункта обычно проверяется, а не был ли он уже добавлен. Подобная проверка позволяет избежать ошибок, возникающих при попытках добавить уже существующий пункт или удалить несуществующий.       4. Создайте процедуру восстановления панелей инструментов документа.

      Public Sub ResetMainMenu()       Dim CstmBar As CommandBar       'Включаем все панели       For Each CstmBar In CommandBars       CstmBar.Enabled = True       Next CstmBar       Set CstmBar = CommandBars.Item(«Menu Bar»)       CstmBar.Visible = True       End Sub

      5. Пропишите обработчик кнопки «Создать».

      Private Sub CommandButton1_Click()       Call CreateCustomMenu       End Sub

      6. Пропишите обработчик кнопки «Отмена», восстанавливающей стандартное окружение.

      Private Sub CommandButton2_Click()       Call ResetMainMenu       End Sub

      7. Чтобы пример был законченным, приведем процедуры, вызываемые в ответ на выбор команд меню Накладнаяи Счет:

      Public Sub Invoice()       MsgBox («Накладная!»)       End Sub       Public Sub Account()       MsgBox («Счет!»)       End Sub

      8. Откомпилируйте программу, запустите форму на выполнение.  

       Рис. 127.Форма примера 61 в рабочем режиме. Результат работы кнопки Создать          Примечание.Данный пример доработать для более рационального использования следующим образом: в головном меню разработчика создать пункт Форма,который вызывает соответствующую форму, редактирующую меню всего приложения (рис. 129, 130). После нажатия кнопки Создатьменю всего приложения Word изменяется, подключив Главное меню, созданное программно. В этом меню пункт «Работа с меню + Отмена» запускает форму с соответствующими кнопками ( Создатьи Отменить).  

       Рис. 128.Результат работы кнопки Отменить

       Рис. 129.Главное меню разработчика и вызываемая форма  

       Рис. 130.Главное меню приложения, созданное программно, и пункт Отмена, вызывающий форму с кнопкой Отменить