Якщо ви створили багато макросів, а потім вирішили перейти до програмування на 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) (Мал. 19) натисніть кнопку Перетворити (Convert), залишивши прапорці встановленими за умовчанням.
Мал.19. Перетворення макросу в процедуру VBA
4. Коли перетворення закінчиться, у формі "Наклейки для клієнтів" (Customers Labels Dialog) клацніть правою кнопкою миші, наприклад по кнопці Скасувати, і виберіть команду Властивості(Properties).
5. У діалоговому вікні Властивості (Properties) розкрийте вкладку Події (Events).
6. У полі для події Натискання кнопки (On Click) виявилося встановленим значення [Процедура обробки подій] ([Event Procedure]). Клацніть по кнопці будівника, що знаходиться праворуч від поля, - відкриється вікно редактора VBA з текстом процедури (Мал. 20).
Мал.20. Процедура, отримана з макросу
У цій процедурі, отриманої з макросу, використовуються об'єкт DoCmd для виконання дії закриття форми. Відповідно до прапорцями, встановленими у вікні Перетворення макросу (Convert Macro), коментарі в макросі були перетворені в коментарі у процедурі і був доданий код обробки помилки, який видає на екран повідомлення про помилку в разі її виникнення .
Аналогічно виконується перетворення макросів, призначених подіям звіту.
Тепер розглянемо перетворення в процедуру VBA макросу, не пов'язаного з подією форми або звіту, наприклад створеного раніше макросу "Менеджери з продажів".
1. Клацніть по ярлику Макроси (Macros) у вікні бази даних "Борей". З'явиться список макросів. Виділіть макрос "Менеджери з продажів".
2. Виберіть команду Сервіс, Макрос, Перетворити макроси (Tools, Macro, Convert Macros to Visual Basic).
3. Відкриється таке ж діалогове вікно, як у попередньому прикладі (див. Мал. 19), в якому необхідно натиснути кнопку Перетворити (Convert). Після закінчення процесу перетворення з'явиться повідомлення про успішне завершення процесу перетворення і відкриється вікно редактора VBA, в якому можна подивитися отриманий код на VBA (Мал. 21).
4. Макрос перетворюється на функцію з аналогічним ім'ям Менеджери_по_продажам (прогалини замінилися символами підкреслення).
Мал.21. Результат перетворення макросу "Менеджери з продажів"
Після перетворення вихідний макрос "Менеджери з продажу" не був вилучений, а в списку модулів у вікні бази даних "Борей" з'явився новий модуль з ім'ям "Перетворений макрос - Менеджери з продажів" (Converted Macro - Менеджери з продажу).
Існує ще один спосіб перетворення макросів в модуль VBA:
1. Виділіть макрос "Менеджери з продажів" у вікні бази даних "Борей".
2. Виберіть команду Файл, Зберегти як (File, Save As).
3. У діалоговому вікні Збереження (Save As), у списку Як (As) виберіть Модуль (Module) (Мал. 22) і натисніть кнопку ОК.