На початку роботи з новою базою даних ви зазвичай створюєте її об'єкти, як-от таблиці, форми та звіти. На певному етапі може знадобитися додати програмування, щоб автоматизувати процеси та підключати ці об'єкти. У цій статті описано засоби програмування в Access.
У цій статті
- Що таке програмування
- Вибір між макросами та кодом VBA
- Виконання поширених завдань із програмування за допомогою майстра кнопок
- Загальні відомості про макроси
- Загальні відомості про код VBA
- Перетворення макросів на код VBA
Що таке програмування
У програмі 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 код, лише якщо ви знаєте, що вона походить із надійного джерела. Створюючи базу даних, яку використовуватимуть інші люди, намагайтеся уникати інструментів програмування, які вимагають від користувача явної довіри до бази даних. Загальні способи уникнути цієї вимоги наведено далі в цьому розділі.
Щоб захистити базу даних, намагайтеся використовувати макроси, коли це можливо, і використовуйте VBA їх лише для операцій, які не можна виконати за допомогою дій макросів. Крім того, намагайтеся застосовувати лише такі дії макросів, які не потребують позначення бази даних як надійної. Обмеживши дії макросів таким чином, користувачі можуть бути впевнені, що база не містить код, який може пошкодити дані або інші файли на комп'ютері.
Зауваження щодо макросів
Програма Access містить багато дій макросів, які дають змогу створювати потужніші макроси, ніж дозволяли попередні версії програми. Наприклад, тепер за допомогою дій макросів можна створювати й використовувати глобальні тимчасові змінні, а нові дії макросів для обробки помилок значно спрощують цю процедуру. У попередніх версіях Access ці функції були доступні лише в VBA Крім того, макрос можна вбудовувати безпосередньо у властивість події об'єкта або елемента керування. Вбудований макрос стає частиною об'єкта або елемента керування та залишається з ним, якщо об'єкт або елемент керування переміщується або копіюється.
За допомогою макросів можна легко виконати низку завдань із програмування, як-от відкриття й закриття форм і виконання звітів. Ви можете швидко зв'язати між собою створені об'єкти бази даних, наприклад форми та звіти, оскільки синтаксису легко запам'ятати. Аргументи для кожної дії відображаються в конструкторі макросів.
Крім випадків, коли макроси застосовуються для підвищення рівня безпеки та спрощення роботи, їх потрібно використовувати для виконання наведених нижче завдань.
Призначення дії або набору дій для клавіші. Для цього потрібно створити групу макросів з іменем
AutoKeys.Виконання дії або послідовності дій під час першого відкриття бази даних. Для цього потрібно створити макрос з іменем
AutoExec.Примітка.
Макрос
AutoExecзапускається раніше, ніж будь-які інші макроси абоVBAкоди, навіть якщо форму запуску призначено в діалоговому вікні "Параметри Access" і приєднано до цієї формиOnOpenабоOnLoadподії макрос абоVBAкод.
Докладні відомості про створення макросів див. в цій статті.
Зауваження щодо VBA
Використовуйте VBA замість макросів, якщо потрібно виконати будь-яку з таких дій:
- Використовуйте вбудовані функції або створіть власні. Програма Access включає багато вбудованих функцій, наприклад
IPmt, яка обчислює суму сплати відсотків. За допомогою цих функцій можна виконувати обчислення, не вдаючись до складних виразів. За допомогоюVBAпрограми можна також створювати власні функції для виконання обчислень, які виходять за межі можливостей виразу, або для заміни складних виразів. Крім того, за допомогою створених у виразах функцій ви можете виконувати спільні операції над кількома об’єктами. - створювати або керувати об'єктами; У більшості випадків найпростіше створити та змінити об'єкт у його режимі конструктора. Проте іноді може знадобитися змінити визначення об'єкта в коді. За допомогою
VBAпрограми можна керувати всіма об'єктами в базі даних і самою базою даних. - Виконання дій на рівні системи. Ви можете виконати цю
RunAppдію в макросі, щоб запустити іншу програму, наприклад Microsoft Excel, у програмі Access, але можливості макросів за межами програми Access обмежені. За допомогоюVBAпрограми дає змогу перевіряти наявність файлу на комп'ютері, використовувати автоматизацію або динамічний обмін даними (DDE), щоб взаємодіяти з іншими програмами Microsoft для Windows (наприклад, Excel), а також викликати функції в бібліотеках динамічного компонування Windows (DLLs). - Обробляти записи по одному. За допомогою
VBAйого допомогою можна переглядати записи в наборі по черзі та виконувати потрібні операції з кожним із них. Натомість макроси працюють одночасно з цілим набором записів.
Виконання поширених завдань із програмування за допомогою майстра кнопок
Якщо потрібно додати кнопку до форми, скористайтеся майстром кнопок, щоб почати роботу з програмування. За допомогою цього майстра можна створити кнопку, яка виконує певне завдання. У файлі Access.accdb () майстер створює макрос, який вбудовується у OnClick властивість кнопки. У файлі .mdb або .adp майстер створює VBA код, оскільки в цих форматах файлів недоступні вбудовані макроси. У будь-якому випадку макрос або VBA код можна потім змінити або вдосконалити відповідно до своїх потреб.
В області переходів клацніть правою кнопкою миші форму, до якої потрібно додати кнопку, і виберіть Конструктор.
На вкладці " Конструктор форм " клацніть стрілку вниз, щоб відобразити колекцію "Елементи керування ", і переконайтеся, що встановлено прапорець "Застосувати майстри елементів керування ".
На вкладці " Конструктор форм " у колекції "Елементи керування" натисніть кнопку.
На бланку форми, клацніть місце, де потрібно розташувати кнопку. Запуститься майстер кнопок.
На першій сторінці майстра в списку Категорії клацніть кожну категорію, щоб переглянути дії для кнопки, які можна запрограмувати за допомогою майстра. У списку Дії виберіть потрібну дію, а потім натисніть кнопку Далі.
Установіть перемикач Текст або Зображення, щоб відобразити на кнопці відповідно текст чи зображення.
- Якщо потрібно відобразити текст, його можна змінити в полі поруч із параметром Текст.
- Якщо потрібно відобразити зображення, майстер запропонує вибрати його в списку. Якщо потрібно вибрати інше зображення, установіть прапорець Показати всі зображення, щоб відкрити список усіх зображень для кнопок, доступних в Access, або натисніть кнопку Огляд і виберіть зображення, що зберігається в іншому розташуванні. Натисніть кнопку Далі.
Введіть зрозуміле ім’я для кнопки. Цей крок не обов'язковий, і ім'я на кнопці не відображається. Проте радимо ввести зрозуміле ім'я, щоб їх було легше відрізнити від інших, коли знадобиться звернутися до кнопки пізніше, наприклад під час налаштування послідовності переходу для елементів керування у формі. Якщо кнопка закриває форму, її можна назвати
cmdCloseCommandCloseабо .Натисніть кнопку Готово. Access розташує кнопку на формі.
Якщо потрібно переглянути код, запрограмований майстром, виконайте такі необов'язкові дії:
Якщо аркуш властивостей ще не відображається, натисніть клавішу F4 .
На аркуші властивостей перейдіть на вкладку Подія.
У полі властивості " Після клацання " натисніть кнопку "Побудувати ".
Access запустить конструктор макросів і відобразить макрос, створений майстром. За потреби макрос можна змінити. Докладні відомості див. в статті "Загальні відомості про макроси". Коли все буде готово, на вкладці "Конструктор макросів " у групі "Закрити " натисніть кнопку "Закрити ", щоб закрити конструктор макросів. Якщо Access запропонує зберегти зміни та оновити властивість, натисніть кнопку "Так ", щоб зберегти зміни, або "Ні ", щоб відхилити їх.
На вкладці " Конструктор форм" у групі "Подання " натисніть кнопку " Вигляд", а потім виберіть пункт "Подання форми". Натисніть нову кнопку, щоб переконатися, що вона працює належним чином.
Загальні відомості про макроси
Макрос – це інструмент, за допомогою якого можна автоматизувати завдання та розширити можливості форм, звітів і елементів керування. Наприклад, коли ви додаєте кнопку до форми, ви можете зв'язати властивість події кнопки OnClick з макросом, що містить команди, які має виконувати кнопка щоразу, коли її вибрано.
Макроси Access – це ніби спрощена мова програмування, за допомогою якої ви створюєте код, складаючи список дій, які потрібно виконати. Під час створення макросу ви вибираєте дії з розкривного списку, а потім вводите потрібні відомості для кожної з них. Макроси допомагають розширити можливості форм, звітів і елементів керування без написання коду в VBA модулі. Макроси являють собою підмножину команд, доступних у VBA, і для більшості користувачів легше побудувати макрос, ніж написати VBA код.
Макроси створюються за допомогою конструктора макросів, який наведено на знімку екрана нижче.
Щоб відкрити конструктор макросів:
- на вкладці Створення в групі Макроси та код натисніть кнопку Макрос.
Загальні відомості про код VBA
Як і макроси, VBA дає змогу автоматизувати програму Access та додати до неї інші можливості. Ви можете розширити цю VBA сферу, скориставшись сторонніми елементами керування або розробивши власні функції й процедури для певних потреб.
Щоб швидко почати роботу VBA , можна спочатку створити макрос Access, а потім перетворити його на VBA код. Відповідні вказівки наведено в статті "Перетворення макросів на код VBA". При цьому створюється новий VBA модуль, який виконує ті самі операції, що й макрос. Крім того, відкривається редактор Visual Basic, у якому можна змінити процедуру. Під час роботи в редакторі Visual Basic можна клацнути ключові слова й натиснути клавішу F1 , щоб відкрити довідку для розробників Access і отримати докладні відомості про кожне ключове слово. Ознайомившись із цією довідкою, ви зможете дізнатися про нові команди, які допоможуть виконати потрібні завдання з програмування.
Перетворення макросів на код VBA
В Access можна автоматично перетворювати макроси на VBA модулі або модулі класів. Ви можете перетворювати макроси, додані до форми або звіту, незалежно від того, чи вони існують як окремі об’єкти або вбудовані макроси. Крім того, ви можете перетворювати глобальні макроси, які не додано до певної форми або звіту.
Перетворення макросів, доданих до форми або звіту
Ця процедура перетворюється на VBA будь-який макрос, на який посилається форма, звіт або будь-який із їхніх елементів керування, і додає VBA код до модуля класу форми або звіту. Модуль класу стає частиною форми або звіту та переміщується або копіюється з ними.
В області переходів клацніть правою кнопкою миші форму або звіт і виберіть пункт "Режим конструктора".
На вкладці " Конструктор форм " у групі "Знаряддя " виберіть команду "Перетворити макроси форми" на код Visual Basic або "Перетворити макроси звіту на код Visual Basic".
У діалоговому вікні " Перетворити макроси форми " або " Перетворити макроси звіту " виберіть, чи потрібно додати код для обробки помилок до функцій, які створить Access. Якщо макроси містять примітки, також виберіть, чи потрібно включати ці примітки до функцій. Щоб продовжити, натисніть кнопку Перетворити. Якщо для форми або звіту модуль класу не існує, Access його створить і додасть до нього процедуру для кожного макросу, пов’язаного з формою або звітом. Крім того, Access змінить властивості події форми або звіту, щоб замість макросу запускалися нові
VBAпроцедури.Щоб переглянути та змінити код:
VBAКоли форму або звіт відкрито в режимі конструктора, натисніть клавішу F4 , щоб відобразити аркуш властивостей, якщо він ще не відображається.
На вкладці "Подія " аркуша властивостей клацніть у будь-якому полі властивості, що відображається
[Event Procedure], а потім натисніть кнопку "Побудувати ". Щоб переглянути властивості події для певного елемента керування, виберіть елемент, клацнувши його. Щоб переглянути властивості події для всієї форми або звіту, у розкривному списку вгорі аркуша властивостей виберіть Форма або Звіт.
Access відкриє редактор Visual Basic і відобразить процедуру події в модулі класу. Ви можете прокрутити вгору або вниз, щоб переглянути інші процедури цього модуля класу.
Перетворення глобальних макросів
В області переходів клацніть правою кнопкою миші макрос, який потрібно перетворити, і виберіть Конструктор.
На вкладці " Конструктор макросів " у групі "Знаряддя " натисніть кнопку "Перетворити макроси на основні візуальні".
У діалоговому вікні Перетворити макрос позначте потрібні параметри й натисніть кнопку Перетворити. Access перетворить макрос і відкриє редактор Visual Basic.
Щоб переглянути та змінити код:
VBA- Якщо вікно проекту не відображається в редакторі Visual Basic, у меню View (Подання) виберіть Project Explorer (Вікно проекту).
- Розгорніть дерево під назвою бази даних, у якій ви працюєте.
- У розділі Modules (Модулі) двічі клацніть потрібний
Converted Macro-<macro name>модуль. Редактор Visual Basic відкриє модуль.
Вкладення функції VBA у властивість події
Коли ви перетворюєте глобальний макрос на VBA, код VBA розміщується в стандартному модулі. На відміну від модуля класу, стандартний модуль не є частиною форми або звіту. Найімовірніше, ви захочете пов’язати функцію з властивістю події у формі, звіті або елементі керування, щоб код запускався саме тоді й там, де потрібно. Для цього ви можете скопіювати VBA код у модуль класу, а потім пов'язати його з властивістю події або створити спеціальний виклик стандартного модуля з властивості події за допомогою наведеної нижче процедури.
- Занотуйте ім’я функції, яка відображається в редакторі Visual Basic. Наприклад, якщо ви перетворили макрос з іменем
MyMacro, функція матиме ім'я .MyMacro() - Закрийте редактор Visual Basic.
- В області переходів клацніть правою кнопкою миші форму або звіт, з якими потрібно пов'язати функцію, і виберіть команду "Конструктор".
- Клацніть елемент керування або розділ, з яким потрібно пов’язати функцію.
- Якщо аркуш властивостей ще не відображається, натисніть клавішу F4 .
- На вкладці Подія аркуша властивостей клацніть поле властивості події, з яким потрібно пов’язати функцію.
- У поле властивості введіть знак рівності (
=), а після нього ім'я функції,=MyMacro()наприклад . Обов’язково додайте дужки. - Збережіть форму або звіт, натиснувши кнопку Зберегти на панелі швидкого доступу.
- В області переходів двічі клацніть форму або звіт і переконайтеся, що код працює належним чином.
Тепер ви опанували основи додавання VBA коду до бази даних. У цій статті описано лише основні відомості про початок роботи. Багато чудових довідників і онлайн-ресурсів допоможуть вам покращити свої навички програмування.
Додаткові відомості
Запуск макросу Access за допомогою сполучення клавіш
Автоматизація подій запуску за допомогою макросу
Створення макросу, який запускається під час відкриття бази даних