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

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

681

тор O ption E x p lic it в начале каждого модуля, чтобы сделать объявление ти­ па переменной обязательным.

Создайте объектные переменные, чтобы избежать длинных ссылок на объек­ ты. Например, если вы управляете объектом S e r ie s диаграммы, то создайте пе­ ременную с помощью следующего кода.

Dim

SI

As

S e rie s

Set

SI

=

A ctive W o rkb o o k . S h e e ts ( 1 ) . C h a rtO b je c ts (1 ). _

 

C h a rt. S e r ie s C o lle c tio n (1)

Объявите объектные переменные конкретного типа. Избегайте использования

объявления As Obj е с t .

• Примените конструкцию W ith-End W ith для вызова нескольких методов

и для изменения нескольких свойств одного объекта везде, где это возможно.

Удалите избыточный код, особенно в записанных макросах.

Если возможно, управляйте данными с помощью массивов VBA, а не диапа­ зонов рабочих листов. Чтение и запись на рабочий лист отнимают намного больше времени, чем обработка данных в памяти. Но это правило не всегда спра­ ведливо. Для получения наилучшего результата необходимо проверить быстро­ действие обоих вариантов.

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

A p p lic a tiu o n . C a lc u la tio n = x lC a lc u la tio n M a n u a l

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

Перед созданием надстройки скомпилируйте используемый код. Это приведет к увеличению размера файла, но избавит от необходимости компилировать код перед каждым запуском процедур.

Проблемы, связанные с использованием надстроек

Надстройки являются достаточно мощным средством. Однако при их создании и ис­ пользовании вас подстерегают некоторые сложности. Надстройки “страдают” собствен­ ным набором проблем, часть которых можно решить. В этом разделе будут рассмотрены вопросы, на которые необходимо обратить особое внимание при создании надстроек для массового распространения среди пользователей.

Правильная установка

Внекоторых случаях нужно правильно установить надстройку, которая была открыта

спомощью диалогового окна Надстройки (Add-Ins), а не команды Файгт^Открыть

(File^ Open). В этом разделе описывается методика, которая позволяет определить, от­ крыта ли данная надстройка, а также предоставляет пользователю возможность устано­ вить надстройку, если она установлена неправильно.

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

683

A p p lic a tio n .A d d in s .A d d (T h is W o rk b o o k . FullNam e)

NewAi. I n s ta lle d = True

 

Case vbNo

открытым

1 Действие не выполняется, остается

Case vbCancel

ThisW orkbook. C lose

End Select

End Sub

Эта процедура имеет следующие особенности.

Надстройка может открываться автоматически, если она установлена и отображает­ ся в диалоговом окне Надстройки (Add-Ins). Сообщение на экране не отображается.

Пользователь может установить надстройку в диалоговом окне Надстройки (Addins). Сообщение не отображается.

Надстройку можно открыть вручную (с помощью команды Файл^Открыть (File1^ Open). Она не входит в коллекцию Addins. При этом на экране отображается со­ общение, в ответ на которое пользователь может выполнить одно из трех действий.

Надстройку можно открыть вручную (с помощью команды Файл^Открыть (File1^ Open). Она входит в коллекцию Addins. При этом на экране отображается сообще­ ние, в ответ на которое пользователь может выполнить одно из трех действий.

Этот код может также использоваться для упрощения установки надстройки, которую выкому-либо передаете в дальнейшем. Для установки этой надстройки достаточно два­ жды щелкнуть на ее имени (при этом она открывается в Excel) и ответить “Да” в ответ на запрос. А еще лучше — модифицировать код таким образом, чтобы надстройка устанав­ ливалась без запроса.

Компакт-диск

© Эта надстройка находится на прилагаемом к книге компакт-диске в файле check a d d in . xlam . Попытайтесь открыть ее с помощью одного из двух ме­ тодов (в диалоговом окне Надстройки (Add-Ins) или с помощью команды Файл^Открыть (File^Open)).

Ссылки на другие файлы

Если надстройка использует другие файлы, то необходимо быть особенно внимательным при распространении приложения. Нельзя ничего предположить о файловой структуре систе­ мы, в которой пользователь запускает приложение. Самый простой метод — потребовать от пользователя расположить все файлы приложения в одной папке. Затем используйте свойство Path рабочей книги приложения, чтобы указать ссылки на необходимые файлы.

Например, если приложение имеет собственную справочную систему, то обязательно удо­ стоверьтесь, что этот файл находится в той же папке, что и само приложение. Затем можете использовать представленную ниже процедуру для поиска файла справочных сведений.

Sub GetHelp ()

A p p lic a tio n .H e lp ThisW orkbook. Path & " \u s e rh e lp .chm "

End Sub

Если приложение использует API-функции стандартных библиотек Windows, то мож­ но ожидать, что Windows найдет все необходимые файлы. Однако если используется собственная библиотека DLL, то лучшим выходом будет сохранение этой библиотеки в

684

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

папке W indow s\System (которая может называться и по-другому). Для определения пути к папке System воспользуйтесь функцией Windows API G etS y stem D irecto ry .

Указание правильной версии Excel

Пользователи более ранних версий Excel могут открывать файлы Excel 2007 (либо

более поздней версии) с помощью утилиты Compatibility Pack, разработанной компанией Microsoft. Если созданная вами надстройка обладает свойствами, которые присущи толь­ ко Excel 2007 либо Excel 2010, следует предупреждать об этом пользователей более ран­

них версий Excel. Ниже приводится используемый в этом случае код.

Sub

C h e ckV e rsio n ()

 

 

 

 

I f

V a l(A p p lic a tio n .V e r s io n )

< 12 Then

 

 

 

MsgBox "Этот

код работает

только в

E xce l 2007 или _

 

 

в более поздних версиях"

 

 

 

T hisW orkbook. C lose

 

 

 

End

I f

 

 

 

End

Sub

 

 

 

Свойство V e rsio n

объекта A p p lic a tio n

возвращает строку. Например, может

быть возвращено значение 12 . 0а. Эта процедура использует функцию VBA V al, кото­ рая игнорирует все, за исключением первого символа алфавита.

©

Перекрестная ссылка

Обратитесь к главе 26 за дополнительными сведениями о совместимости.

Часть

Разработка

приложений

В этой части...

Глава 22

Работа с лентой

Глава 23

Работа с контекстными меню

Глава 24

Предоставление справки в приложениях

Глава 25

Разработка пользовательских приложений