В данном разделе мы рассмотрим несколько трюков, с помощью которых можно создавать пользовательские панели инструментов.
Чтобы быстро создать пользовательскую панель инструментов с одной кнопкой, можно воспользоваться следующим макросом (листинг 3.41).
Sub CreateCustomControlBar()
' Создание панели инструментов
With Application.CommandBars.Add(Name:="Панель",
Temporary:=True)
' Создание и настройка кнопки
With .Controls.Add(Type:=msoControlButton)
.Style = msoButtonIconAndCaption
.FaceId = 66
.Caption = «Просто кнопка»
End With
' Покажем панель
.Visible = True
End With
End Sub
Результат выполнения данного макроса представлен на рис. 3.11.
Рис. 3.11. Пользовательская панель инструментов
Обратите внимание, что в данном случае кнопка отображается со значком и подписью одновременно.
Примечание
Кнопка General на панели инструментов присутствует по умолчанию, независимо от выполненного макроса. В данном случае нас интересует лишь кнопка Просто кнопка, созданная с помощью макроса.
Теперь познакомимся с макросом, использование которого позволяет создать пользовательскую панель инструментов с двумя кнопками. Код данного макроса выглядит следующим образом (листинг 3.42).
Sub CreateCustomControlBar()
' Создание панели инструментов
With Application.CommandBars.Add(Name:="Панель",
Temporary:=True, _
Position:=msoBarLeft)
' Создание и настройка первой кнопки
With .Controls.Add(Type:=msoControlButton)
.Style = msoButtonWrapCaption
.Caption = «Просто кнопка»
End With
' Создание и настройка второй кнопки
With .Controls.Add(Type:=msoControlButton)
.Style = msoButtonIconAndWrapCaption
.Caption = «Кнопка»
.FaceId = 225
End With
' Покажем панель
.Visible = True
End With
End Sub
После запуска макроса на вкладке Надстройки появится пользовательская панель (рис. 3.12).
Рис. 3.12. Панель в левой части интерфейса
В данном случае кнопка General также присутствует по умолчанию, наш макрос на ее появление не влияет.
Формирование пользовательского меню
Возможности программы предусматривают создание и дальнейшее использование пользовательских меню, которые могут располагаться на вкладке Надстройки. Вот пример подобного макроса (листинг 3.43).
Sub AddCustomMenu()
' Добавление меню
W i t h A p p l i c a t i o n . C o m m a n d B a r s ( 1 ) . C o n t r o l s . A d d
(Type:=msoControlPopup, _
Temporary:=True)
.Caption = «Архив»
With .Controls
' Добавление и настройка первого пункта
With .Add(Type:=msoControlButton)
.FaceId = 280
.Caption = «Просмотр»
.OnAction = «Макрос1»
End With
' Добавление вложенного меню
With .Add(Type:=msoControlPopup)
.Caption = «База данных»
With .Controls
' Добавление и настройка первого пункта _
вложенного меню
With .Add(Type:=msoControlButton)
.FaceId = 1643
.Caption = «Поставщики»
.OnAction = «Макрос2»
End With
' Добавление и настройка второго пункта _
вложенного меню
With .Add(Type:=msoControlButton)
.FaceId = 1000
.Caption = «Покупатели»
.OnAction = «Макрос3»
End With
End With
End With
End With
End With