Учебно-методические материалы для студентов кафедры АСОИУ

Тема 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 имеет шесть методов:
  1. Сору.
  2. Delete.
  3. Execute.
  4. Move.
  5. Reset.
  6. SetFocus.
Методы Delete и Reset уже были описаны при рассмотрении объекта CommandBar. Метод Сору копирует элемент управления с одной панели команд на другую. Синтаксис метода Сору:
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