Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
курсовая / Источники / excel_2010_professionalnoe_programmirovanie_na_vba_RuLit_Me_412629.pdf
Скачиваний:
4
Добавлен:
27.09.2025
Размер:
22.97 Mб
Скачать
Tools'^References.

672

Часть V. Профессиональные методы программирования

находиться в модуле кода VBA надстройки. Приведенный ниже оператор отображает значение ячейки А1 листа Лист1.

MsgBox ThisWorkbook. S h e e ts("Л и с т 1 ") . Range("A l").V alue

Получение доступа к VBA-процедурам надстройки

Доступ к процедурам VBA, которые сохраняются в надстройке, несколько отличается

от доступа к процедурам файла обычной рабочей книги XLSM. Если выполнить команду Вид1^ Макросы^Макросы (View^Macros^Macros), то в диалоговом окне Макрос (Macro) не будет макросов, сохраненных в открытой надстройке. Это вызвано попыткой Excel ограничить доступ к таким процедурам.

Совет

©Если имя процедуры известно, то его можно ввести непосредственно в диа­ логовом окне Макрос (Macro) и щелкнуть на кнопке Выполнить (Run) для за­ пуска на выполнение. При этом процедура Sub должна находиться в модуле кода общего назначения, а не в модулях кода конкретных объектов.

Поскольку процедуры, находящиеся в надстройке, не отображаются в диалоговом окне Макрос (Macro), для доступа к ним используются другие средства. К возможным ва­ риантам решения проблемы относятся использование стандартных методов (назначение комбинаций клавиш, команд ленты и элементов контекстного меню), а также косвенных методов (создание процедур обработки событий). Одним из главных выступает метод ОпТime, который выполняет процедуру в определенное время суток.

Можно также воспользоваться методом Run объекта A p p lic a t io n для выполнения

процедуры, содержащейся в надстройке.

A p p licatio n .Run "myaddin.xlam !DisplayNames"

Еще одним вариантом можно считать использование команды Tools^References (Сервис^Ссылки) редактора VBE, которая позволяет создать ссылку на надстройку. В итоге вы непосредственно ссылаетесь на одну из процедур в коде VBA, не указывая имени файла. На самом деле необходимости в использовании метода Run нет: процедуру можно вызывать непосредственно, пока она не объявлена с ключевым словом P r iv a te . Представленный далее оператор выполняет процедуру D is p la y N a m e s , которая содер­

жится в надстройке, указанной с помощью команды

C all DisplayNames

Примечание

Даже после установки ссылок на надстройку имена содержащихся в ней макросов не отображаются в диалоговом окне Макрос (Macro).

Функции, определенные в надстройке, работают точно так же, как и функции, опре­ деленные в рабочей книге XLSM. Доступ к подобным функциям не представляет особого

труда, поскольку Excel отображает их имена в диалоговом окне Вставка функции (Insert Function), в категории Определенные пользователем (User Defined), по умолчанию. Исключение состоит в том, что, если функция определяется с помощью ключевого слова P r iv a t e , она не отображается в этом списке. Объявляйте функцию с помощью ключе­ вого слова P r iv a t e , если она будет использоваться только другими процедурами VBA,

а не формулами рабочего листа.

ава 21. Создание и использование надстроек

677

войства объекта A d d in

Объект A d d in является единственным представителем коллекции A d d in s . Например,

ятого чтобы отобразить имя файла, в котором содержится надстройка, являющаяся пер-

мчленом коллекции A d d in s , можно воспользоваться следующим оператором:

gbox A d d in s ( 1 ) .Name

Объект A d d in имеет 14 свойств, информацию о которых можно получить в справоч-

м руководстве. Пять свойств являются “скрытыми”. Их названия довольно запутаны, этому мы рассмотрим некоторые наиболее важные свойства этого объекта.

ЮЙСТВО Name

Это свойство содержит имя файла надстройки. Name — свойство, предназначенное лько для чтения; оно не позволяет изменить имя файла и указать другое значение ойства Name.

ЮЙСТВО Path

Свойство, содержащее имя диска и папки, в которых расположен файл надстройки, ачение этого свойства не имеет в конце наклонной черты и имени файла.

ЗОЙСТВО Full name

Это свойство содержит полное имя надстройки, которое состоит из имени диска, пути имени файла. Данное свойство бесполезно, поскольку такая же информация предосвляется свойствами Name и P a th . Следующие операторы в результате выполнения

'звращают одинаковые строки.

jgBox

A d d in s ( 1 ) .P a th & " \ " & A d d in s ( 1 ) .Name

jgBox

A d d in s ( 1 ) .FullNam e

войство Title

Скрытое свойство, содержащее описательное имя надстройки. Свойство T i t l e ото- )ажается в диалоговом окне Надстройки (Add-Ins). Данное свойство предназначено шько для чтения, и единственный способ изменить его значение — использовать пашь Свойства документа (Document Properties). Для отображения этой панели восхиьзуйтесь командой Разработчик^Изменение^Область документа (Developer^ [odify1^Document). Эту команду следует применить к XLSM-версии файла (до его пре5разования в надстройку). Еще один способ отобразить эту панель — щелкнуть правой

юпкой мыши на файле надстройки в окне проводника Windows и в контекстном меню лбрать параметр Свойства (Properties). Затем нужно выбрать вкладку Подробно

)etails) и выполнить необходимые изменения. Этот метод не работает в случае, если айл открыт в Excel.

Как правило, к члену коллекции обращаются с помощью значения свойства Name, оллекция A d d in s этим отличается от других коллекций. В ней вместо свойства Name ия адресации используется значение свойства T i t l e . В следующем примере отобража-

гся имя файла надстройки Analysis ToolPak (Пакет анализа), которая находится в файле n alys32 . x l l , а свойству T i t l e присвоено значение “Analysis ToolPak”.

ub ShowName ()

MsgBox A d d in s ( "A n a ly s is T o o lp a k ") .Name nd Sub

678

Часть V. Профессиональные методы программирования

Можно, конечно, ссылаться на определенную надстройку по индексу, если индекс из­ вестен то^но. Но в большинстве случаев для ссылки на надстройку используется ее свой­ ство Name.

Свойство Comments

В этом скрытом свойстве хранится текст, который отображается в диалоговом окне Надстройки (Add-Ins), описывающем определенную надстройку. Свойство Comments

предназначено только для чтения. Единственный способ изменить его значение— ис­ пользовать диалоговое окно Свойства (Properties) до преобразования рабочей книги

в надстройку. Описание может состоять из 255 символов, но диалоговое окно Над­ стройки отображает из них только первые 100.

Если макрос попытается считать значение свойства Comments надстройки, не со­ держащей комментариев, отобразится сообщение об ошибке.

Свойство I n s t a l l e d

Свойство I n s t a ll e d имеет значение T ru e , если надстройка установлена (т.е. в диа­

логовом окне Надстройки (Add-Ins) напротив имени надстройки установлен флажок). Ус­ тановка свойства I n s t a ll e d равной значению T ru e приводит к загрузке надстройки. Установка этого свойства равной значению F a ls e приводит к выгрузке надстройки из па­

мяти. Ниже приведен пример установки (т.е. открытия) надстройки Analysis ToolPak (Пакет анализа) с помощью кода VBA.

Sub

In s ta llA T P ()

 

A d d in s ( "A n a ly s is T o o lP a k ") . I n s ta lle d = True

End

Sub

После выполнения процедуры в диалоговом окне Надстройки (Add-Ins) будет ото­ бражаться установленный флажок напротив имени надстройки Analysis ToolPak (Пакет анализа). Если надстройка уже установлена, то присвоение свойству I n s t a l l e d значе­ ния T ru e не приведет к выполнению каких-либо действий. Для того чтобы отключить надстройку (удалить), установите свойство I n s t a ll e d равным F a ls e .

Предупреждение

Если файл надстройки был открыт с помощью команды Файл^Открыть (File^Open), он не рассматривается как “официально” установленный. Сле­ довательно, свойству I n s ta lle d будет присвоено значение False .

Процедура L is t A llA d d ln s , код которой приводится ниже, отображает все элементы коллекции A d d in s , а также свойства Name, T i t l e , I n s t a lle d , Comments и P a th .

Sub L is t A llA d d in s ()

 

 

 

Dim

a i As

A ddin

 

 

 

Dim

Row As

Long

 

 

 

Dim

T a b le l

As

L is tO b je c t

 

C e lls . C le a r

 

 

 

 

 

R a n g e ("A l:E l")

=

A r r a y ( "Name", " T it le " ,

" I n s t a lle d " ,

Row

"Comments",

"P a th ")

 

= 2

 

 

 

 

 

 

On

E rro r

Resume

N ext

**

For

Each

a i

In

A ddins

 

 

C e lls(R o w ,

1)

=

ai.Name

 

 

C ells(R o w ,

2)

=

a i . T i t l e

 

 

C e lls(R o w ,

3)

=

a i. I n s t a lle d