Тема 2.8 Разработка приложений для MS Office
Для разработчика на VBA имеется возможность изменять внешний вид офисных приложений. Это реализуется через свойства и методы таких встроенных объектов как, например, CommandBar.
Коллекция CommandBars
Элементами коллекции CommandBars являются объекты CommandBar, которые представляют собой панель команд. Таким образом, коллекция CommandBars содержит все панели команд приложения.
Например, чтобы создать новую панель команд, можно выполнить следующую процедуру:
Set myBar = CommandBars.Add(Name:="Личная",Position:=msoBarFloating) myBar.visible = True
Свойства коллекции CommandBars
Свойство | Описание |
---|---|
Application | Позволяет сослаться на активный объект Application и его свойство. Каждый объект и коллекция в MS Office имеют данное свойство |
ActionControl | Возвращает объект CommandBarControl, значение свойства OnAction которого определяет запускаемую процедуру. Если процедура не была инициирована элементом управления панели команд, то это свойство возвращает значение Nothing (пусто). Данное свойство можно использовать, например, для проверки того, какая из кнопок на панели инструментов была нажата |
ActiveMenuBar | Возвращает объект CommandBar, который представляет собой активную строку меню приложения |
Count | Возвращает количество элементов коллекции (строк меню, панелей инструментов и контекстных меню) |
DisplayFonts | Определяет способ отображения шрифта в списке Шрифт (Font). Если установлено значение True, то элементы списка отображаются тем шрифтом, который они и представляют |
DisplayToolTips | Определяет, отображаются ли экранные подсказки элементов управления панели команд: Да (True) или Нет (False). Обратите внимание, что в случае установки данного свойства в одном из приложений MS Office оно будет оказывать немедленное воздействие на все открытые приложения MS Office, а также на все приложения MS Office, запущенные после этого |
Item | Возвращает объект CommandBar, являющийся элементом коллекции CommandBars, или объект CommandBarControl из коллекции CommandBarControls. Синтаксис: Expression.Item(Index) где Expression – обязательный элемент, представляющий выражение, которое возвращает объект CommandBar или объект CommandBarControl; Index – обязательный элемент типа Variant, который определяет имя или порядковый номер возвращаемого объекта в коллекции CommandBars |
LargeButtons | Определяет размер отображаемых кнопок панели инструментов: большего размера, чем нормальный Да (True) или Нет (False) |
MenuAnimationStyle | Определяет тип анимации панели команд. Значение данного свойства должно равняться значению одной из констант, указанных после таблицы |
Методы коллекции CommandBars
Add
Метод Add позволяет создать панель команд, которая автоматически добавляется в коллекцию CommandBars. Данный метод возвращает объект CommandBar.Синтаксис метода Add:
Expression.Add (Name, Position, MenuBar, Temporary)
Expression – обязательный элемент – выражение, которое возвращает объект ComrnandBar;
Name – имя создаваемой панели команд. Необязательный элемент типа Variant. Если данный аргумент отсутствует, то панели команд будет присвоено имя по умолчанию, например, "Настраиваемая 1";
Position – расположение или тип создаваемой панели команд. Необязательный элемент типа Variant. MenuBar – необязательный элемент типа Variant. Если данному параметру задать значение True, то активную панель меню можно поменять на создаваемую панель команд. По умолчанию значение данного аргумента равняется False;
Temporary – необязательный элемент типа Variant. Если задать данному параметру значение True, то создаваемая панель команд будет временной и после закрытия приложения будет удалена. По умолчанию значение данного аргумента равняется False.
FindControls
Метод FindControls возвращает коллекцию CommandBarControls, которая удовлетворяет определенным критериям.Синтаксис метода FindControls:
Expression.FindControls(Type, Id, Tag, Visible)
Expression – обязательный элемент, который представляет собой выражение, возвращающее коллекцию Command Bars.
ReleaseFocus
Данный метод убирает фокус со всех панелей команд.Синтаксис метода ReleaseFocus:
Expression.ReleaseFocus
Элемент синтаксиса Expression представляет собой выражение, которое возвращает объект CommandBars.
Объект CommandBar
Объект CommandBar предоставляет доступ к панелям команд. Все объекты CommandBar являются членами коллекции CommandBars.Свойства объекта CommandBar
Свойство | Описание |
---|---|
AdaptiveMenu | Определяет, является ли меню адаптивным (True) или нет (False) |
Application | Возвращает объект Application, который является контейнером (container application) для данного объекта |
Building | Если данное свойство панели команд или элемента управления равно True, то данная панель является встроенной. В противном случае (False) – это специальная панель команд, элемент управления или встроенный элемент управления, свойство OnActian которого имеет некоторое значение |
Controls | Возвращает коллекцию CommandBarControls, которая содержит все элементы управления панели команд или всплывающего элемента управления |
Enable | Данное свойство имеет значение True, если панель команд или элемент управления панели команд доступны (в случае панелей команд это аналогично выбору панели в списке доступных панелей). Для встроенных панелей команд присвоение значения True означает, что само приложение определяет, будет ли доступна панель команд. Если значение свойства Enabled равно False, то панель команд будет недоступной |
Height | Определяет высоту панели команд в пикселях |
Index | Возвращает номер объекта в коллекции |
Left | Определяет расстояние (в пикселях) от левого края панели команд или элемента управления панели команд до левого края экрана. Для закрепленных панелей команд это свойство определяет расстояние от панели команд до левого края закрепленной области |
Name | Определяет имя панели команд. В случае встроенной панели команд данное свойство возвращает имя, определенное в американской версии приложения (U.S. English) |
Parent | Возвращает объект-родитель объекта |
Position | Определяет позицию панели команд. Может принимать значения одной из следующих встроенных констант: msoBarLeft, msoBorTop, msoBarRight, msoBarBottom, msoBarFloating, msoBarPopup или msoBarMenuBar |
Protection | Определяет способ защиты панели команд от пользовательской настройки. Данное свойство может принимать значение одной из следующих констант: msoBarProtection, msoBarNoProtection, msoBarNoCustomize, msoBarNoResize, msoBarNoMove, msoBarNoChangeVisible, msoBarNoChangeDock, msoBarNoVerticalDock или msoBarNoHorizontalDock |
RowIndex | Определяет порядок закрепления панели команд относительно других панелей команд в области стыковки. Данное свойство может быть положительным числом типа Integer или одной из констант: msoBarRowFirst или msoBarRowLast |
Top | Определяет расстояние (в пикселях) от верхнего края панели команд или элемента управления панели команд до верхнего края окна. Для закрепленных панелей команд это свойство определяет расстояние от панели команд до верхнего края области стыковки. Для объекта CommandBarControl данное свойство доступно только для чтения |
Type | Определяет тип панели команд. Значением данного свойства может быть одна из констант: msoBarTypeNormal – панель инструментов; msoBarTypeMenuBar – строка меню; msoBarTypePopup – контекстное меню |
Visible | Позволяет настроить атрибут видимости панели команд или элемента управления панели команд. Для вновь созданной панели команд это свойство по умолчанию равно False. Перед заданием свойству Visible значения True свойство Enabled панели команд должно иметь значение True |
Width | Определяет ширину панели команд или элемента управления панели команд в пикселях |
Методы объекта CommandBar
Метод Delete
Метод Delete удаляет элемент управления из коллекции CommandBars. Данный метод имеет два варианта синтаксиса:Expression.Delete Expression.Delete (Temporary)
Expression – обязательный элемент – выражение, которое возвращает объекты CommandBar (Синтаксис 1) или CommandBarControl (Синтаксис 2);
Temporary – необязательный элемент типа Boolean. Если значение данного параметра равно True, то элемент управления удаляется в текущем сеансе работы, но в следующем будет снова отображен.
Метод FindControl
Метод FindControl возвращает объект CommandBarControl, который удовлетворяет определенным критериям, задаваемым параметрами метода FindControl. Синтаксис этого метода имеет вид:Expression.FindControl(Type, Id, Tag, Visible, Recursive)
Expression – обязательный элемент – выражение, которое возвращает объект CommandBar;
Туре – необязательный элемент, определяющий тип элемента управления. Значение данного аргумента может равняться одной из констант, определяющих тип элемента управления;
Id – необязательный элемент типа Variant, выполняющий функцию идентификатора элемента управления;
Tag – необязательный элемент типа Variant, который задает значение свойства Tag элемента управления;
Visible – необязательный элемент типа Variant. По умолчанию данное значение равно False. При задании данному параметру значения True в поиск включаются только видимые элементы управления панели инструментов. Видимые панели команд включают все видимые элементы панели инструментов и любые меню, которые открыты во время выполнения метода FindControl;
Recursive – необязательный элемент типа Boolean. Определяет, включаются (True) или нет (False) в поиск всплывающие панели команд, расположенные на панели команд, к которой применяется метод FindControl. По умолчанию используется значение False.
Метод Reset
Метод Reset сбрасывает настройки встроенных панелей команд к исходным настройкам, установленным по умолчанию, или устанавливает оригинальное функционирование и внешний вид элементов управления панели команд. Синтаксис метода Reset:Expression.Reset
Элемент синтаксиса Expression метода Reset представляет собой выражение, которое возвращает один из следующих объектов: CommandBar, CommandBarControl, CommandBarButton, CommandBarPopup или CommandBarComboBox.
Метод ShowPopup
Метод ShowPopup выводит на экран панель команд как контекстное меню в заданных координатах или в текущей позиции указателя. Если свойство Position команд имеет значение, отличное от значения константы msoBarPopup, то этот метод не выполняется. Синтаксис метода ShowPopup:Expression.ShowPopup(X, Y)
Expression – обязательный элемент, представляющий собой выражение, возвращающее объект CommandBar;
X – необязательный элемент типа Variant, задающий координату расположения контекстного меню по горизонтали. В случае отсутствия этого параметра используется текущая координата указателя;
Y – необязательный элемент типа Variant, задающий координату расположения контекстного меню по вертикали. Если этот параметр отсутствует, то используется текущая координата указателя.
Коллекция CommandBarControls
Коллекция CommandBarControLs предоставляет доступ ко всем элементам управления панелей команд. Чтобы получить доступ к коллекции CommandBarControLs конкретного объекта CommandBar, необходимо использовать свойство Controls этого объекта.
Для добавления на панель команд нового элемента управления используют метод Add этой коллекции.
В листинге 28 приведен пример создания панели инструментов с последующим добавлением на нее кнопки.
Листинг 28. Создание панели инструментов с добавлением на нее кнопки
Sub Examp() Dim MyBar As CommandBar Dim MyButton As CommandBarButton Set MyBar = CommandBars.Add() Set MyButton = MyBar.Controls.Add(msoControlButton) MyBar.Visible = True End Sub
В приведенном примере объявляются две переменные: MyBar типа CommandBar и MyButton типа CommandBarButton. Затем им присваиваются ссылки на созданную панель инструментов и кнопку панели инструментов соответственно. Последняя инструкция в этой процедуре делает созданную панель инструментов видимой.
Чтобы сослаться на конкретный элемент управления панели команд, являющийся членом коллекции CommandBarControls, можно использовать следующую инструкцию:
Set myControl = CommandBars(1).Controls(1)
Здесь для ссылки на конкретный элемент управления используется свойство Controls объекта CommandBar.
Объект CommandBarControl
Объект CommandBarControl предоставляет доступ ко всем элементам управления панели команд. Каждый объект CommandBarControl является элементом коллекции CommandBarControls.Все свойства и методы, которые имеет объект CommandBarControl, также имеют и объекты CommandBarButton, CommandBarComboBox и CommandBarPopup.
В случае объявления в программе переменной типа CommandBarControl, ей можно присвоить ссылку на объекты CommandBarButton, CommandBarComboBox и CommandBarPopup.
Свойства объекта CommandBarControl
Свойство | Описание |
---|---|
BeginGroup | Позволяет начать группу элементов управления на панели команд, начиная с данного, при задании данному свойству значения True |
Caption | Определяет текст заголовка элемента управления панели команд. Для свойства TooltipText значение данного свойства является значением по умолчанию |
Index | Возвращает порядковый номер объекта в коллекции. Первый элемент управления панели команд в коллекции CommandBarControls имеет номер 1. Разделители не включаются в коллекцию CommandBarControls |
OnAction | Определяет имя макроса или функции Visual Basic, которая будет выполнена при нажатии на элементе управления или изменении его значения |
Parameter | Определяет строку, которую может использовать приложение для выполнения команды при нажатии на элементе управления панели команд. Эта строка может быть, например, параметром функции, определенной свойством OnAction. С помощью данного свойства можно изменить поведение встроенного элемента управления. Для этого ему необходимо присвоить соответствующее значение |
Priority | Определяет приоритет элементов управления панелей команд в том случае, если элементы управления не помещаются на одной строке. Допустимыми значениями данного свойства являются числа в диапазоне от 0 до 7. Если значение этого свойство равно 1, то элемент управления не может быть удален с панели команд. При этом все остальные значения данного свойства игнорируются. Обратите внимание, что данное свойство используется только для элементов управления панелей инструментов и не применимо для пунктов меню |
TooltipText | Определяет текст экранной подсказки, отображаемой для элемента управления панели команд. По умолчанию в качестве значения данного свойства используется значение свойства Caption |
Type | Определяет тип элемента управления панели команд. Значение данного свойства должно равняться одной из констант, определяющих тип элемента управления (msoControlType) |
Методы объекта CommandBarControl
Объект CommandBarControl имеет шесть методов:- Сору.
- Delete.
- Execute.
- Move.
- Reset.
- SetFocus.
Expression.Copy(Bar, Before)
Expression – обязательный элемент, являющийся выражением, которое возвращает один из следующих объектов: CommandBarControl, CommandBarButton, CommandBarPopup или CommandBarComboBox;
Bar – необязательный элемент – объект CommandBar, идентифицирующий панель команд, на которую копируется элемент управления. Если данный аргумент отсутствует, то элемент управления копируется на ту панель команд, где он находится;
Before – необязательный элемент – число, которое указывает позицию копируемого элемента управления на панели команд. Скопированный элемент управления будет вставлен перед элементом управления в позицию, определяемую данным аргументом. Если значение данного аргумента не задано, то создаваемый элемент управления располагается в конце панели команд.
Метод Execute выполняет процедуру или встроенную команду, присвоенную элементу управления панели команд. Для специальных элементов управления запускаемая процедура определяется значением свойства OnAction. Синтаксис метода Execute:
Expression.Execute
Здесь Expression – это выражение, которое возвращает один из следующих объектов: CommandBarControl, CommandBarButton, CommandBarPopup или CommandBarComboBox.
Метод Move перемещает элемент управления в пределах одной и той же панели команд или на другую панель команд. Синтаксис метода Move:
Expression.Move(Bar, Before)
Этот метод имеет те же элементы синтаксиса, что и рассмотренный ранее Сору.
Метод SetFocus устанавливает фокус клавиатуры на элемент управления панели команд, если последний является видимым и доступным. Синтаксис метода SetFocus:
Expression.SetFocus
Объект CommandBarButton
Объект CommandBarButton предоставляет доступ к кнопкам на панели команд. Свойства объекта CommandBarButtonОбъект CommandBarButton, имеет все свойства, присущие объекту CommandBarControl, а также ряд специфичных свойств, представленных в таблице.
Свойство | Описание |
---|---|
Faceld | Определяет идентификатор внешнего вида кнопки панели команд. Это свойство определяет только внешний вид кнопочного элемента управления на панели команд, а выполняемое с помощью нее действие определяется свойством Id объекта CommandBarControl. Для кнопки с внешним видом, определяемым пользователем, значение данного свойства равно 0 |
ShortcutText | Определяет название горячей клавиши, которое отображается в меню, подменю или контекстных меню. Это свойство можно задать только в том случае, если ранее установлено свойство OnAction |
Style | Определяет способ отображения кнопки на панели команд. Значение данного свойства может равняться одной из следующих констант: msoButtonAutomatic, msoButtonIcon, msoButtonCaption, msoButtonIconAndCaption, msoВuttonIconAndCaptionBelow, msoButtonIconAndWrapCaption, msoВuttonIconAndWrapCaptionBelow или msoButtonWrapCaption |
Методы объекта CommandBarButton
Кроме методов объекта CommandBarControl, объект CommandBarButton имеет ряд специальных методов. Метод CopyFace - копирует внешний вид кнопки в буфер обмена. А вызов метода PasteFace позволяет вставить содержимое буфера обмена в кнопочный элемент управления.
CC-BY-CA Анатольев А.Г., 21.04.2014