На початку роботи з новою базою даних ви зазвичай створюєте кілька її об’єктів, як-от таблиць, форм і звітів. Потім виникає потреба додати до бази даних програмовані можливості, щоб автоматизувати певні процеси та зв’язати між собою об’єкти бази даних. Ця стаття допоможе вам зорієнтуватися на інструменти програмування в Access.
У цій статті
Що таке програмування
У Access програмування – це процес додавання функціональності бази даних за допомогою макросів Access або коду Visual Basic for Applications (VBA). Припустімо, ви створили форму та звіт, і до форми потрібно додати кнопку, натисканням якої відкриватиметься звіт. У цьому випадку програмування означає створення макросу або процедури VBA і налаштування властивості події OnClick кнопки так, що після її натискання починається виконання макросу або процедури. Для запуску простої операції, як-от відкриття звіту, можна скористатися майстром кнопок або вимкнути майстер і запрограмувати дію самостійно.
Примітка.: Багато програм Microsoft Office використовують термін "макрос", щоб посилатися на код VBA. Це може бути складно Access користувачам, оскільки в Access термін "макрос" посилається на іменовані дії макросів, які можна зібрати за допомогою конструктора макросів. Access дії макросу представляють лише підмножину команд, доступних у VBA. Конструктор макросів забезпечує більш структурований інтерфейс, ніж редактор Visual Basic, що дає змогу додавати програмування до елементів керування та об'єктів, не опанувавши код VBA. Пам'ятайте, що в довідкових статтях Access макроси Access називають макросами. І навпаки, код VBA називається VBA, кодом, функцією або процедурою. Код VBA міститься в модулях класу (які входять до окремих форм або звітів і зазвичай містять код лише для цих об'єктів) і в модулях (які не прив'язані до певних об'єктів і зазвичай містять "глобальний" код, який можна використовувати в усій базі даних).
Об'єкти (наприклад, форми та звіти) і елементи керування (наприклад, кнопки та текстові поля) мають різні властивості події, до яких можна вкладати макроси або процедури. Кожна властивість події пов'язана з певною подією, наприклад клацанням миші, відкриттям форми або зміненням даних у текстовому полі. Події також можуть ініціюватися факторами за межами Access, наприклад системними подіями, макросами чи процедурами, прикріпленими до інших подій. База даних може ускладнюватися, якщо додати багато макросів або процедур до кількох властивостей подій багатьох об'єктів, але в більшості випадків можна досягти потрібних результатів, використовуючи дуже мало програм.
Вибір між макросами та кодом VBA
Рішення про використання макросів, VBA або обох варіантів перш за все визначається способом розгортання або розповсюдження бази даних. Наприклад, якщо база даних зберігається на комп’ютері та нею користуєтеся лише ви, більшість завдань із програмування можна виконати за допомогою коду VBA, якщо вам це зручно. Однак якщо ви плануєте розташувати базу даних на файловому сервері та надати до неї доступ іншим, краще не використовувати VBA із міркувань безпеки.
Приймаючи рішення про вибір між макросами або кодом VBA, необхідно взяти до уваги два фактори: потрібний рівень безпеки й бажану функціональність. Питанню безпеки слід приділити увагу, оскільки код VBA може знизити рівень захисту даних або пошкодити файли на комп’ютері. Коли ви працюєте з базами даних, створеними іншими користувачами, активуйте код VBA, лише якщо ви впевнені, що ці бази походять із надійного джерела. Створюючи базу даних, призначену для спільної роботи, намагайтесь уникати інструментів програмування, які вимагають від користувача позначити базу як надійну. Загальні рекомендації щодо цього наведено далі в цьому розділі.
Щоб подбати про безпеку бази даних, намагайтеся використовувати макроси, коли це можливо, а програмування мовою VBA – лише для операцій, які не можна виконати за допомогою дій макросів. Крім того, намагайтеся застосовувати лише такі дії макросів, для запуску яких не потрібно позначати базу даних як надійну. Завдяки такому обмеженому застосуванню дій макросів користувачі можуть бути впевнені, що база не містить код, який може пошкодити дані або інші файли на комп’ютері.
Зауваження щодо макросів
Access містить багато нових дій макросів, які дають змогу створювати потужніші макроси, ніж можна створювати за допомогою попередніх версій Access. Наприклад, тепер за допомогою дій макросів можна створювати й використовувати глобальні тимчасові змінні, а нові дії макросів для обробки помилок значно спрощують цю процедуру. У попередніх версіях Access ці функції доступні лише за допомогою VBA. Крім того, ви можете вбудовувати макрос безпосередньо у властивість події об’єкта або елемента керування. Вбудований макрос стає частиною об’єкта або елемента керування та переміщується або копіюється з ним.
За допомогою макросів можна легко виконати низку завдань із програмування, як-от відкриття й закриття форм і виконання звітів. Ви можете швидко й легко зв’язати між собою створені об’єкти бази даних (форми, звіти тощо) завдяки простому синтаксису. Аргументи для кожної дії відображаються в конструкторі макросів.
Крім випадків, коли макроси застосовуються для підвищення рівня безпеки та спрощення роботи, їх потрібно використовувати для виконання наведених нижче завдань.
-
Призначення дії або набору дій для клавіші. Для цього потрібно створити групу макросів із назвою AutoKeys.
-
Виконання дії або послідовності дій під час першого відкриття бази даних. Для цього потрібно створити макрос із назвою AutoExec.
Примітка.: Макрос AutoExec виконується раніше будь-яких інших макросів або коду VBA, навіть якщо ви призначили форму запуску в діалоговому вікні Параметри Access і підключили макрос або код VBA до події OnOpen або OnLoad цієї форми.
Додаткову інформацію про створення макросів див. в розділі Загальні відомості про макроси.
Зауваження щодо VBA
Використовуйте код VBA замість макросів, якщо потрібно виконати будь-яку з наведених нижче дій.
-
Використовуйте вбудовані функції або створюйте власні функції, Access включає багато вбудованих функцій, наприклад функцію IPmt , яка обчислює виплату відсотків. Ви можете використовувати ці вбудовані функції, не вдаючись до складних виразів. За допомогою коду VBA можна створювати власні функції для виконання обчислень, які перевищують можливості виразу, або для заміни складних виразів. Крім того, за допомогою створених у виразах функцій ви можете виконувати спільні операції над кількома об’єктами.
-
Створення та обробка об’єктів. У більшості випадків найпростіше створювати та змінювати об’єкт у його режимі конструктора. Проте іноді може знадобитися змінити визначення об’єкта в коді. За допомогою VBA ви можете обробляти всі об’єкти в базі, а також саму базу.
-
Виконання дій на рівні системи. Ви можете виконати дію RunApp у макросі, щоб запустити іншу програму (наприклад, Microsoft Excel) з Access, але за допомогою макросу не можна виконувати інші дії за межами Access. VBA дає змогу перевіряти наявність певного файлу на комп’ютері, взаємодіяти з іншими програмами Microsoft для Windows (як-от Excel), використовуючи технологію Automation або динамічний обмін даними (DDE), а також викликати функції в бібліотеках динамічного компонування Windows (DLL).
-
Обробка записів по одному за раз. За допомогою VBA ви можете переглядати записи в наборі по черзі та виконувати потрібні операції з кожним із них. Натомість макроси працюють одночасно з цілим набором записів.
Виконання поширених завдань із програмування за допомогою майстра кнопок
Якщо потрібно додати кнопку до форми, скористайтеся майстром кнопок, щоб почати роботу з програмування. За допомогою цього майстра можна створити кнопку, яка виконує певне завдання. У файлі Access (ACCDB) майстер створює макрос, вбудований у властивість OnClick кнопки. У файлі MDB або ADP майстер створює код VBA, оскільки в цих форматах файлів недоступні вбудовані макроси. У будь-якому випадку макрос або код VBA можна потім змінити або вдосконалити відповідно до своїх потреб.
-
В області переходів клацніть правою кнопкою миші форму, до якої потрібно додати кнопку, і виберіть Конструктор.
-
На вкладці Конструктор форм клацніть стрілку вниз, щоб відобразити колекцію Елементів керування , а потім переконайтеся, що вибрано параметр Використовувати майстри елементів керування .
-
На вкладці Конструктор форм у колекції Елементи керування натисніть кнопку Кнопка.
-
На бланку форми, клацніть місце, де потрібно розташувати кнопку.
Запуститься майстер кнопок.
-
На першій сторінці майстра в списку Категорії клацніть кожну категорію, щоб переглянути дії для кнопки, які можна запрограмувати за допомогою майстра. У списку Дії виберіть потрібну дію, а потім натисніть кнопку Далі.
-
Установіть перемикач Текст або Зображення, щоб відобразити на кнопці відповідно текст чи зображення.
-
Якщо потрібно відобразити текст, його можна змінити в полі поруч із параметром Текст.
-
Якщо потрібно відобразити зображення, майстер запропонує вибрати його в списку. Якщо потрібно вибрати інше зображення, установіть прапорець Відображати всі зображення , щоб відобразити список усіх зображень кнопок, які Access передбачено, або натисніть кнопку Огляд , щоб вибрати зображення, яке зберігається в іншому розташуванні.
Натисніть кнопку Далі.
-
-
Введіть зрозуміле ім’я для кнопки. Цей крок необов’язковий, адже ім’я на кнопці не відображається. Проте радимо ввести зрозуміле ім’я, щоб цю кнопку було легше відрізнити від інших, коли знадобиться звернутися до неї пізніше (наприклад, під час налаштування послідовності переходу для елементів керування у формі). Якщо кнопка закриває форму, її можна назвати на кшталт "кмдЗакрити" або "КомандаЗакрити".
-
Натисніть кнопку Готово.
Access розмістить кнопку у формі.
-
Якщо потрібно переглянути код, який створив майстер, виконайте такі необов’язкові дії:
-
Якщо аркуш властивостей ще не відображається, натисніть клавішу F4.
-
На аркуші властивостей перейдіть на вкладку Подія.
-
У полі властивості Після клацання натисніть кнопку Побудувати .
Access запускає конструктор макросів і відображає макрос, створений майстром. За потреби можна відредагувати макрос (докладні відомості про те, як редагувати макрос, див. в розділі Загальні відомості про макроси). Завершивши, на вкладці Конструктор макросів у групі Закрити натисніть кнопку Закрити , щоб закрити конструктор макросів. Якщо Access пропонує зберегти зміни та оновити властивість, натисніть кнопку Так , щоб зберегти зміни, або Ні , щоб відхилити зміни.
-
-
На вкладці Конструктор форм у групі Подання натисніть кнопку Вигляд і виберіть пункт Подання форми. Натисніть нову кнопку, щоб переконатися, що вона працює належним чином.
Загальні відомості про макроси
Макрос – це інструмент, за допомогою якого можна автоматизувати завдання та розширити можливості форм, звітів і елементів керування. Наприклад, коли ви додаєте кнопку до форми, ви зв’язуєте властивість події OnClick кнопки з макросом, що містить команди, які має виконувати кнопка щоразу після натискання.
Ми вважаємо, що Access макроси як спрощену мову програмування, якою ви створюєте код, створюючи список дій, які потрібно виконати. Під час створення макросу ви вибираєте дії з розкривного списку, а потім вводите потрібні відомості для кожної з них. Макроси допомагають розширити можливості форм, звітів і елементів керування без написання коду в модулі VBA. Макроси являють собою підмножину команд, доступних у VBA, і для більшості користувачів легше побудувати макрос, ніж написати код VBA.
Макроси створюються за допомогою конструктора макросів, який наведено на знімку екрана нижче.
Щоб відкрити конструктор макросів:
-
на вкладці Створення в групі Макроси та код натисніть кнопку Макрос.
Загальні відомості про код VBA
Як і макроси, VBA дає змогу додати автоматизацію та інші функції до програми Access. Ви можете доповнити код VBA, скориставшись сторонніми елементами керування або розробивши власні функції й процедури для певних потреб.
Щоб швидко почати програмування VBA, спочатку створіть Access макрос, а потім перетворіть його на код VBA. Відповідні вказівки наведено в розділі Перетворення макросів на код VBA. При цьому створюється новий модуль VBA, який виконує ті самі операції, що й макрос. Крім того, відкривається редактор Visual Basic, у якому можна змінити процедуру. Працюючи в редакторі Visual Basic, можна клацнути ключові слова та натиснути клавішу F1, щоб запустити Access довідці розробника та дізнатися більше про кожне ключове слово. Потім ви можете переглянути довідку Access розробника та знайти нові команди, які допоможуть виконати потрібні завдання з програмування.
Перетворення макросів на код VBA
За допомогою Access можна автоматично перетворювати макроси на модулі VBA або модулі класу. Ви можете перетворювати макроси, додані до форми або звіту, незалежно від того, чи вони існують як окремі об’єкти або вбудовані макроси. Крім того, ви можете перетворювати глобальні макроси, які не додано до певної форми або звіту.
Перетворення макросів, доданих до форми або звіту
Ця процедура перетворює на VBA будь-які макроси, на які посилається форма, звіт або будь-який із їхніх елементів керування (або макроси, які вбудовано в ці об’єкти), і додає код VBA до модуля класу форми або звіту. Модуль класу стає частиною форми або звіту та переміщується або копіюється з ними.
-
В області переходів клацніть правою кнопкою миші форму або звіт і виберіть Конструктор.
-
На вкладці Конструктор форм у групі Знаряддя натисніть кнопку Перетворити макроси форми на Visual Basic або Перетворити макроси звіту на Visual Basic.
-
У діалоговому вікні Перетворення макросів форми або Перетворити макроси звіту виберіть, чи потрібно Access додати код обробки помилок до функцій, які вона створює. Крім того, якщо макрос містить примітки, виберіть, чи потрібно включати їх як примітки до функцій. Щоб продовжити, натисніть кнопку Перетворити.
Якщо модуля класу для форми або звіту немає, Access створює його та додає процедуру до модуля для кожного макросу, пов'язаного з формою або звітом. Access також змінює властивості події форми або звіту, щоб замість макросів вони запускали нові процедури VBA.
-
Щоб переглянути та змінити код VBA, виконайте такі дії:
-
Коли форму або звіт відкрито в режимі конструктора, натисніть клавішу F4, щоб відобразити аркуш властивостей, якщо він ще не відображається.
-
На вкладці Подія аркуша властивостей клацніть будь-яке поле властивості, у якому відображається напис [Процедура події], а потім натисніть кнопку побудови . Щоб переглянути властивості події для певного елемента керування, виберіть елемент, клацнувши його. Щоб переглянути властивості події для всієї форми або звіту, у розкривному списку вгорі аркуша властивостей виберіть Форма або Звіт.
Access відкриває редактор Visual Basic і відображає процедуру події в модулі класу. Ви можете прокрутити вгору або вниз, щоб переглянути інші процедури цього модуля класу.
-
Перетворення глобальних макросів
-
В області переходів клацніть правою кнопкою миші макрос, який потрібно перетворити, і виберіть Конструктор.
-
На вкладці Конструктор макросів у групі Знаряддя натисніть кнопку Перетворити макроси на Visual Basic.
-
У діалоговому вікні Перетворити макрос позначте потрібні параметри й натисніть кнопку Перетворити.
Access перетворить макрос і відкриє редактор Visual Basic.
-
Щоб переглянути та змінити код VBA, виконайте такі дії:
-
Якщо вікно проекту не відображається в редакторі Visual Basic, у меню View (Подання) виберіть Project Explorer (Вікно проекту).
-
Розгорніть дерево під назвою бази даних, у якій ви працюєте.
-
У папці Modules (Модулі) двічі клацніть модуль Перетворений макрос – (Ім’я_макросу).
Редактор Visual Basic відкриє модуль.
-
Вкладення функції VBA у властивість події
Коли ви перетворюєте глобальний макрос на VBA, код VBA розташовується в стандартному модулі. На відміну від модуля класу, стандартний модуль не є частиною форми або звіту. Найімовірніше, ви захочете пов’язати функцію з властивістю події у формі, звіті або елементі керування, щоб код запускався саме тоді й там, де потрібно. Для цього можна скопіювати код VBA до модуля класу, а потім пов’язати його з властивістю події або створити спеціальний виклик стандартного модуля з властивості події за допомогою наведеної нижче процедури.
-
Занотуйте ім’я функції, яка відображається в редакторі Visual Basic. Наприклад, якщо ви перетворили макрос із назвою "МійМакрос", функція матиме ім’я МійМакрос().
-
Закрийте редактор Visual Basic.
-
В області переходів клацніть правою кнопкою миші форму або звіт, який потрібно пов’язати з функцією, і виберіть Конструктор.
-
Клацніть елемент керування або розділ, з яким потрібно пов’язати функцію.
-
Якщо аркуш властивостей ще не відображається, натисніть клавішу F4.
-
На вкладці Подія аркуша властивостей клацніть поле властивості події, з яким потрібно пов’язати функцію.
-
У поле властивості введіть знак рівності (=), а після нього – ім’я функції, наприклад =МійМакрос() . Обов’язково додайте дужки.
-
Збережіть форму або звіт, натиснувши кнопку Зберегти на панелі швидкого доступу.
-
В області переходів двічі клацніть форму або звіт і переконайтеся, що код працює належним чином.
Тепер ви знаєте основні кроки, щоб додати код VBA до бази даних. У цій статті описано лише основи початку роботи; є багато чудових довідкових книг і онлайнових ресурсів, які можуть допомогти вам побудувати свої навички програмування.
Додаткові відомості
Запуск макросу Access за допомогою сполучення клавіш
Автоматизація подій запуску за допомогою макросу
Створення макросу, який запускається під час відкриття бази даних