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

668

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

1.Выберите команду Файл^Параметры E xcels Надстройки (File1^ Excel Options^ Add-Ins).

2.В диалоговом окне Параметры Excel (Excel Options) из раскрывающегося спи­ ска Управление (Manage) выберите пункт Параметры Excel (Excel Add-Ins) и щелкните на кнопке Перейти (Go) либо нажмите <Alt+TI>.

После этого Excel отобразит диалоговое окно Надстройки (Add-Ins).

3.Щелкните на кнопке Просмотр (Browse), найдите только что созданную над­ стройку и дважды щелкните на ней мышью.

После нахождения файла новой надстройки сама надстройка будет отображаться в списке диалогового окна Надстройки (Add-Ins). Как показано на рис. 21.4, в диалоговом окне Надстройки (Add-Ins) также отображается описательная ин­ формация, которая была определена в окне Properties.

4. Щелкните на кнопке ОК для закрытия диалогового окна и открытия надстройки.

После открытия надстройки Export Charts на контекстной вкладке Работа с диа­ граммаМИ ^Конструктор (Chart Tools1^Design) появится новая группа Export Charts

(Экспорт диаграмм) с двумя кнопками. После щелчка на первой кнопке отображается диалоговое окно Экспорт диаграмм (Export Charts), а после щелчка на второй — со­

держимое файла справки. Обратите внимание, что контекстная вкладка Работа с диа­ граммами1^ Конструктор отображается только в том случае, если выбрана диаграмма

(или лист диаграммы).

Тестирование надстройки

После установки надстройки следует провести ее тестирование. Откройте новую рабо­ чую книгу и протестируйте различные свойства утилиты Export Charts. Выполняйте раз­ личные тесты, чтобы выяснить возможные проблемы. А еще лучше — обратитесь к чело­ веку, не знакомому с приложением, который сможет провести настоящий “краш-тест”.

При выявлении каких-либо ошибок исправьте код надстройки (исходный файл при этом не нужен). После выполнения изменений сохраните файл, выбрав команду File^ Save (Файл^Сохранить) редактора VBE.

Распространение надстройки

Для распространения надстроек достаточно просто передать “заинтересованным ли­ цам” копию файла XLAM (версия XLSM этого же файла не нужна) с инструкциями по его установке. Если файл заблокировать паролем, доступ к коду макроса откроется толь­ ко после ввода пароля.

Изменение надстройки

Если нужно изменить надстройку, сначала откройте ее, а затем разблокируйте VB-

проект, защищенный паролем. Для разблокирования активизируйте редактор VBE и дважды щелкните мышью на имени проекта в окне Project (Проект). При эхом может

отобразиться запрос о вводе пароля. Выполните необходимые изменения и сохраните файл в VBE (с помощью команды File^Save (Файл^Сохранить)).

Если создается надстройка, которая сохраняет информацию в рабочем листе, то для просмотра рабочей книги в Excel свойству Is A d d ln нужно присвоить значение F a lse .

670

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

Не забыли ли вы удалить все операторы Debugs Print (Отладкам Печать) из кода?

Выполнялась ли принудительная повторная компиляция надстройки, позволяющая удостовериться в отсутствии синтаксических ошибок?

Учитываются ли вопросы интернационализации?

Оптимизирована ли надстройка на оптимальное быстродействие? См. раздел “Оптимизация производительности надстроек”.

Сравнение файлов X L A M и X L S M

Этот раздел начинается со сравнения файла надстройки XLAM с исходным файлом XLSM. Далее рассмотрены методы, которые применяются для оптимизации производи­ тельности надстройки, а также предложена методика, позволяющая уменьшить размер файла надстройки, что приведет к ускорению ее загрузки, а также к экономии места на диске и к освобождению дополнительной оперативной памяти.

Файл надстройки XLSM имеет такой же размер, как и исходный файл рабочей книги. Код VBA файла XLAM не сжимается и не оптимизируется, поэтому увеличение быстро­ действия не относится к достоинствам надстроек.

Членство в коллекциях

Надстройка является элементом коллекции A ddins, но не выступает “официальным членом” коллекции Workbooks. К надстройке можно обращаться с помощью метода Workbooks объекта A p p lic a tio n , указав в качестве индекса имя файла, в котором хранится надстройка. Следующий оператор создает объект, который представляет над­ стройку M yaddin. xlam.

Dim

T e stA d d in

As

Workbook

Set

T e stA d d in

=

W orkbooks( "m y a d d in .x la m ")

На надстройки нельзя ссылаться с помощью числового индекса коллекции Work­ books. Если применить приведенный далее код для просмотра членов этой коллекции, то надстройка M yaddin. xlam отображена не будет.

Dim

w as

Workbook

For

Each

w in A p p lic a tio n . Workbooks

MsgBox

w . Name

Next

w

 

С другой стороны, следующий цикл For

N ext

позволяет отобразить надстройку

M yaddin.xlam

(если, конечно, Excel о ней

знает)

в диалоговом окне Надстройки

(Add-Ins).

 

 

 

 

Dim

a as

A ddin

 

 

 

For

Each

a in

A p p lic a tio n .A d d in s

 

 

MsgBox

a .Name

 

 

Next

a

 

 

 

 

Отображение окон файлов X S L M и X LA M

ЯГ»

Обычные рабочие книги отображаются в одном или нескольких окнах. Например, представленный далее оператор отображает количество окон активной рабочей книги.

MsgBox A ctive W o rkb o o k . W indows. Count

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

671

Состоянием отображения каждого окна рабочей книги можно управлять с помощью команды Вид^Окно1^Скрыть (View^Window^Hide) или значений свойства V is ib le .

Следующий код скрывает все окна активной рабочей книги.

Dim Win

As Window

For Each

Win In

A ctiveW orkbook.W indow s

W in .V is ib le

= F alse

Next Win

 

 

Файлы надстроек никогда не отображаются и официально не имеют окон, хотя содержат рабочие листы (скрытые). Следовательно, в списке открытых окон меню Вид^Окно1 Перейти в другое окно (View^Window^Switch Windows) надстройки не представлены. Ес­ ли надстройка M y a d d in . x la m открыта, то следующий оператор возвратит значение 0.

MsgBox W orkbooks( "m ya d d in .x la m ") . W indows. Count

Рабочие листы и листы диаграмм в файлах x ls m и x la m

Файлы надстроек, как и файлы рабочих книг, могут содержать любое количество рабо­ чих листов или листов диаграмм. Но, как было отмечено ранее, файл XLSM должен иметь

как минимум один рабочий лист, чтобы можно было преобразовать его в надстройку. После открытия надстройки код VBA будет получать доступ к листам, содержащимся

в надстройке, как и в случае обычной рабочей книги. В связи с тем, что файлы надстроек не являются частью коллекции Workbooks, на надстройку необходимо ссылаться по имени, а не по индексу. Из следующего примера вы узнаете, как извлекать значения ячейки А1 на первом рабочем листе надстройки M y a d d in . x la m , открытой в момент

выполнения этого кода.

MsgBox W orkbooks( "m y a d d in .x la m ") .W o rksh e e ts( 1 ) . R a n g e ("A l").V a lu e

Если надстройка содержит рабочий лист, который должен отображаться, то можно скопировать его в открытую рабочую книгу или создать новую рабочую книгу на основе этого листа.

Например, представленный ниже код копирует первый рабочий лист надстройки и размещает его в активной рабочей книге (в качестве последнего листа рабочей книги).

Sub CopySheetFromAddin ()

Dim AddinS heet

As

W orksheet

Dim NumSheets

As

Long

Set AddinS heet

=

W orkbooks( "m ya d d in .x la m ") . S h e e ts (1)

NumSheets = A c tiv e W o rk b o o k . S h e e ts . Count

A ddinSheet. Copy A f t e r : = A ctiveW orkbo ok. Sheets(NumSheets)

End Sub

Обратите внимание на то, что эта процедура работает даже в том случае, если VBAпроект надстройки защищен паролем.

Создать рабочую книгу на основе листа из надстройки еще проще.

Sub CreateNewWorkbook ()

Workbooks( "m ya dd in . x la m ") . S h e e ts ( 1 ) .Copy

End Sub

Примечание

В предыдущем примере предполагается, что код находится в файле, отлич­ ном от файла надстройки. Код VBA в файле надстройки всегда может ис­ пользовать объект ThisW orkbook (ЭтаКнига) для определения ссылок на листы или диапазоны надстройки. Например, следующий оператор должен