Преобразование макросов в процедуры VBA

Если вы создали много макросов, а потом решили перейти к программированию на VBA, не следует беспокоиться о том, что придется заново переписывать на VBA все созданные макросы. В Access существует возможность автоматического преобразования макросов в процедуры на VBA. Это касается как макросов, связанных с событиями в формах и отчетах, которые преобразуются в процедуры обработки событий, так и общих макросов, не связанных с формами и отчетами. Все они преобразуются в отдельные стандартные модули.

Давайте попробуем преобразовать в процедуры обработки событий макросы, назначенные событиям формы "Наклейки для клиентов" (Customers Labels Dialog):

  1. Откройте форму "Наклейки для клиентов" (Customers Labels Dialog) в режиме Конструктора.
  2. Выберите команду Сервис, Макрос, Преобразовать макросы формы (Tools, Macro, Convert form's Macros to Visual Basic).
  3. В диалоговом окне Преобразование макроса формы (Convert form macros) (рис. 11.19) нажмите кнопку Преобразовать (Convert), оставив флажки установленными по умолчанию.

Рис. 11.19. Преобразование макроса в процедуру VBA

  1. Когда преобразование закончится, в форме "Наклейки для клиентов" (Customers Labels Dialog) щелкните правой кнопкой мыши, например по кнопке Отменить, и выберите команду Свойства (Properties).
  2. В диалоговом окне Свойства (Properties) раскройте вкладку События (Events).
  3. В поле для события Нажатие кнопки (On Click) оказалось установленным значение [Процедура обработки событий] ([Event Procedure]). Щелкните по кнопке Построителя, находящейся справа от поля, — откроется окно редактора VBA с текстом процедуры (рис. 11.20).

Рис. 11.20. Процедура, полученная из макроса

В этой процедуре, полученной из макроса, используются объект DoCmd для выполнения макрокоманды закрытия формы. В соответствии с флажками, установленными в окне Преобразование макроса (Convert Macro), комментарии в макросе были преобразованы в комментарии в процедуре и был добавлен код обработки ошибки, который выдает на экран сообщение об ошибке в случае ее возникновения (см. гл. 13).

Аналогично выполняется преобразование макросов, назначенных событиям отчета.

Теперь рассмотрим преобразование в процедуру VBA макроса, не связанного с событием формы или отчета, например созданного ранее макроса "Менеджеры по продажам".

  1. Щелкните по ярлыку Макросы (Macros) в окне базы данных "Борей". Появится список макросов. Выделите макрос "Менеджеры по продажам".
  2. Выберите команду Сервис, Макрос, Преобразовать макросы (Tools, Macro, Convert Macros to Visual Basic).
  3. Откроется такое же диалоговое окно, как в предыдущем примере (см. рис. 11.19), в котором необходимо нажать кнопку Преобразовать (Convert). После окончания процесса преобразования появится сообщение об успешном завершении процесса преобразования и откроется окно редактора VBA, в котором можно посмотреть полученный код на VBA (рис. 11.21).
  4. Макрос преобразуется в функцию с аналогичным именем Менеджеры_по_продажам (пробелы заменились символами подчеркивания).

Рис. 11.21. Результат преобразования макроса "Менеджеры по продажам"

После преобразования исходный макрос "Менеджеры по продажам" не был удален, а в списке модулей в окне базы данных "Борей" появился новый модуль с именем "Преобразованный макрос — Менеджеры по продажам" (Converted Macro — Менеджеры по продажам).

Существует еще один способ преобразования макросов в модуль VBA:

  1. Выделите макрос "Менеджеры по продажам" в окне базы данных "Борей".
  2. Выберите команду Файл, Сохранить как (File, Save As).
  3. В появившемся диалоговом окне Сохранение (Save As), в раскрывающемся списке Как (As) выберите элемент Модуль (Module) (рис. 11.22) и нажмите кнопку ОК.

Рис. 11.22. Сохранение макроса в виде модуля