Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Макросы.doc
Скачиваний:
26
Добавлен:
21.11.2018
Размер:
16.91 Mб
Скачать

Создание надстроек Excel

В этом часе вы уже познакомились с двумя способами автоматического выполнения процедур (при открытии или закрытии рабочих книг и в ответ на наступление определенных событий). Но предположим, что необходима автоматическая загрузка определенных процедур при открытии самой программы Excel. Перечисленные выше способы автоматического выполнения процедур в этом случае не подходят. Выход есть и в данной ситуации: надо создать необходимые процедуры и сохранить рабочую книгу их содержащую, как надстройку. Рабочая книга-надстройка содержит информацию, созданную пользователем, например специальную структуру и оформление рабочего листа или процедуры. Книгу-надстройку нельзя отрыть (как обычную рабочую книгу) и изменить, но она может содержать средства настройки, которыми пользователь может управлять. Обычно надстройки содержат следующее:

  • функции, созданные пользователем;

  • пользовательские диалоговые окна;

  • пользовательские меню;

  • пользовательские панели инструментов.

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

  1. Откройте новую рабочую книгу и создайте функцию Комиссионные.

  2. Введите код этой функции

Function Комиссионные(х As Variant)

 Комиссионные = х * 0.3

End Function

  1. Сохраните рабочую книгу под именем МояФункция.

  2. Выполните команду Файл > Сохранить как. В диалоговом окне Сохранение документа в раскрывающемся списке Тип файла выберите Надстройка Microsoft Excel. Автоматически откроется папка Addins. Щелкните на кнопке Сохранить для создания новой надстройки.

  3. Закройте все открытые рабочие книги.

  4. Откройте новую рабочую книгу.

  5. Выполните команду Сервис > Надстройки, откроется диалоговое окно Надстройки.

  6. Щелкните на кнопке Обзор. В открывшемся диалоговом окне Обзор, отображающем содержимое папки Addins, выберите файл МояФункция и щелкните на кнопке ОК. Щелкните на кнопке ОК в диалоговом окне Надстройки.

  7. Если вы сейчас откроете меню Окно, то увидите, что открыта только одна(текущая) рабочая книга.

  8. В ячейку А1 введите число 100. В ячейку В1 введите формулу =комиссионные(А1) и нажмите клавишу <Enter>. Комиссионные будут вычислены.

Надеюсь, этот маленький пример ясно показал основную идею создания и использования надстроек.

Резюме

В этом часе вы получили тот уровень знаний о VBA, который необходим для автоматизации выполнения процедур. Вы узнали, что процедура Auto_Open автоматически выполняется при открытии рабочей книги, a Auto_Close - при закрытии. Вы также познакомились с процедурами, выполняемыми при наступлении определенных событий. Наконец, вы узнали, что такое надстройки Excel, как их создавать и использовать.

Вопросы и ответы

Вопрос. Можно ли процедуру, выполняемую при открытии рабочей книги, назвать не Auto_Open, а другим именем?

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

Вопрос. Как сделать, чтобы процедура, сохраненная в книге-надстройке, была доступна всегда?

Ответ. Сохраните ее в личной книге макросов.

Практикум

С помощью тестов и упражнений вы проверите, насколько хорошо усвоили изложенный материал. Ответы на вопросы смотрите в Приложении.

Тесты

  1. Если необходимо выполнение определенной процедуры при импортировании данных с помощью MS Query, какое событие необходимо использовать?

  2. Истинно или ложно следующее утверждение: в рабочей книге может быть несколько процедур Auto_Open?

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

  4. Истинно или ложно следующее утверждение: вы должны при использовании надстройки каждый раз загружать ее вручную?

  5. Предположим, что при закрытии рабочей книги необходимо сохранить внешний файл Word. Как это сделать?

  6. Сформулируйте задачи, которые могут выполнять надстройки.