Applies ToAccess за Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Когато създавате нова база данни, обикновено започвате със създаването на няколко обекта на базата данни, а именно таблици, формуляри и отчети. В даден момент обаче ви се налага да добавите малко програмиране, за да автоматизирате определени процеси и да свържете обектите на базата данни. Тази статия ви помага да се ориентирате в инструментите за програмиране в Access.

В тази статия

Какво е програмиране?

В Access програмирането е процесът на добавяне на функционалност към вашата база данни с помощта на Access макроси или код на Visual Basic for Applications (VBA). Да предположим например, че сте създали формуляр и отчет и искате да добавите команден бутон във формуляра, който отваря отчета, когато щракнете върху него. В този случай програмиране е процесът на създаване на макрос или процедура на VBA и след това задаване на свойството за събитие OnClick на командния бутон, така че щракването върху командния бутон да изпълни макроса или процедурата. За проста операция, като отваряне на отчет, можете да използвате съветника за командни бутони, който да свърши цялата работа, или да изключите съветника и да извършите програмирането сами.

Забележка: Много програми на Microsoft Office използва термина "макрос" като препратка към код на VBA. Това може да е объркващо за Access потребители, защото в Access терминът "макрос" препраща към наименувана колекция от макрокоманди, която можете да сглобите с помощта на конструктора на макроси. Access макрокоманди представляват само поднабор от командите, налични във VBA. Конструктора на макроси ви предоставя по-структуриран интерфейс от редактора на Visual Basic, позволявайки ви да добавяте програмиране към контроли и обекти, без да се налага да учите кода на VBA. Не забравяйте, че в помощните статии за AccessAccess макроси се наричат макроси. И обратното, кодът на VBA се нарича VBA, код, функция или процедура. Код на VBA се съдържа в модули на клас (които са част от отделни формуляри или отчети и обикновено съдържат код само за тези обекти) и в модули (които не са свързани с конкретни обекти и обикновено съдържат "глобален" код, който може да се използва в цялата база данни).

Обектите (като например формуляри и отчети) и контролите (като например командни бутони и текстови полета) имат свойства за различни събития, към които можете да добавите макроси или процедури. Всяко свойство за събитие се свързва с конкретно събитие, като например щракване с мишката, отваряне на формуляр или промяна на данни в текстово поле. Събитията могат да бъдат предизвикани и от фактори извън Access, като например системни събития, макроси или процедури, които са прикачени към други събития. Вашата база данни може да се усложни, ако добавите много макроси или процедури към няколко свойства за събития на много обекти, но в повечето случаи можете да постигнете желаните резултати, като използвате много малко програмиране.

Най-горе на страницата

Макрос или код на VBA трябва да използвам?

Решението дали да използвате макрос, 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 можете да проверите дали даден файл съществува на компютъра, да използвате автоматизация или динамичен обмен на данни (DDE) за комуникация с други базирани на Microsoft Windows програми, като например Excel, и да извикате функции в библиотеки за динамично свързване (dll) на Windows.

  • Манипулиране на записи един по един    Можете да използвате VBA, за да преминете през набор от записи, един по един, и да изпълните операция с всеки запис. За разлика от това, макросите работят с цели набори от записи наведнъж.

Най-горе на страницата

Използване на съветника за командни бутони за извършване на чести задачи за програмиране

Ако добавяте команден бутон към формуляр, съветникът за командни бутони може да ви помогне да започнете с програмирането. Съветникът ви помага да създадете команден бутон, който изпълнява конкретна задача. Във файл на Access (.accdb) съветникът създава макрос, който е вграден в свойството OnClick на командния бутон. В .mdb или .adp файл съветникът създава код на VBA, тъй като вградените макроси не са налични в тези файлови формати. И в двата случая можете след това да промените или да подобрите макроса или кода на VBA, за да отговаря по-добре на нуждите ви.

  1. В навигационния екран щракнете с десния бутон върху формуляра, в който искате да добавите командния бутон, след което щракнете върху Изглед на проектиране.

  2. В раздела Проектиране на формуляр щракнете върху стрелката надолу, за да покажете галерията Контроли , и след това се убедете, че е избрано Използване на съветници за контроли .

  3. В раздела Проектиране на формуляр , в галерията Контроли щракнете върху Бутон.

  4. В мрежата за проектиране на формуляр щракнете там, където искате да се постави командният бутон.

    Съветникът за командни бутони се стартира.

  5. В първата страница на съветника щракнете върху всяка категория в списъка Категории, за да видите кои действия съветникът може да програмира да бъдат изпълнявани от командния бутон. В списъка Действия изберете желаното действие и след това щракнете върху Напред.

  6. Щракнете или върху опцията Текст, или върху опцията Картина – в зависимост от това дали искате на командния бутон да се показва текст, или картина.

    • Ако искате да се показва текст, можете да редактирате текста в полето до опцията Текст.

    • Ако искате да се показва картина, съветникът предлага картина в списъка. Ако искате да изберете друга картина, изберете квадратчето за отметка Покажи всички картини , за да се покаже списък с всички картини на командните бутони, които Access предоставя, или щракнете върху Преглед , за да изберете картина, която е съхранена на друго място.

      Щракнете върху Напред.

  7. Въведете смислено име за командния бутон. Тази стъпка не е задължителна и името не се показва в командния бутон. Въпреки това е добра идея да въведете смислено име, така че, когато по-късно ви се наложи да препратите към командния бутон (ако например задавате реда на разделите за контроли във вашия формуляр), да можете по-лесно да разграничите командните бутони. Ако командният бутон затваря формуляра, можете да го наречете например cmdClose или CommandClose.

  8. Щракнете върху Готово.

    Access поставя командния бутон във формуляра.

  9. Ако искате да видите какво е "програмирал" съветникът за вас, изпълнете следните стъпки по желание:

    1. Ако списъкът със свойства още не е показан, натиснете F4, за да го покажете.

    2. Щракнете върху раздела Събитие в списъка със свойства.

    3. В полето на свойството При щракване щракнете върху бутона Изграждане Изображение на бутон.

      Access стартира конструктора на макроси и показва макроса, създаден от съветника. Можете по желание да редактирате макроса (за повече информация как да редактирате макрос, вижте раздела Разбиране на макросите). Когато приключите, в раздела Проектиране на макрос , в групата Затвори щракнете върху Затвори , за да затворите конструктора на макроси. Ако Access ви подкани да запишете промените и да актуализирате свойството, щракнете върху Да , за да запишете промените, или върху Не , за да отхвърлите промените.

  10. В раздела Проектиране на формуляр , в групата Изгледи щракнете върху Изглед и след това върху Изглед за формуляр. Щракнете върху новия команден бутон, за да се уверите, че работи според очакванията ви.

Най-горе на страницата

Разбиране на макросите

Макросът е инструмент, който ви позволява да автоматизирате задачи и да добавяте функционалност към вашите формуляри, отчети и контроли. Ако например добавяте команден бутон към формуляр, трябва да свържете свойството за събитието OnClick на бутона с макрос, съдържащ командите, които искате бутонът да изпълнява при всяко щракване върху него.

Полезно е да се мисли за Access макроси като за опростен език за програмиране, на който създавате код чрез създаване на списък с действия за изпълнение. Когато създавате макрос, избирате всяко действие от падащ списък и след това попълвате необходимата информация за него. Макросите ви позволяват да добавяте функционалност към формуляри, отчети и контроли, без да пишете код в модул на VBA. Макросите предоставят подмножество на командите, налични във VBA, и повечето хора намират за по-лесно да създадат макрос, вместо да пишат код на VBA.

Създавате макрос с помощта на конструктора на макроси, който е показан на илюстрацията по-долу.

Конструкторът на макроси на Access 2010

За да покажете конструктора на макроси:

  • В раздела Създаване, в групата Макроси и код щракнете върху Макрос.

Най-горе на страницата

Разбиране на кода на VBA

Подобно на макросите, VBA ви позволява да добавяте автоматизация и друга функционалност към вашето Access приложение. Можете да разширите VBA с помощта на контроли на трети лица и можете да напишете свои собствени функции и процедури за вашите конкретни нужди.

Един бърз начин да започнете с VBA програмирането е първо да създадете макрос за Access и след това да го конвертирате във VBA код. Инструкции как да направите това, са включени в раздела Преобразуване на макроси в код на VBA. Тази функция създава нов модул на VBA, който извършва същите операциите като макроса. Освен това отваря редактора на Visual Basic, за да можете да започнете да променяте процедурата. Когато работите в редактора на Visual Basic, можете да щракнете върху ключови думи и да натиснете F1, за да започнете Access помощ за разработчици и да научите повече за всяка ключова дума. След това можете да прегледате помощта за Access разработчици и да откриете нови команди, които да ви помогнат да изпълнявате желаните задачи за програмиране.

Най-горе на страницата

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

Можете да използвате Access за автоматично преобразуване на макроси в модули или модули на клас на VBA. Можете да преобразувате макроси, добавени към формуляр или отчет, независимо дали съществуват като отделни обекти, или като вградени макроси. Можете също да преобразувате глобални макроси, които не са добавени към конкретен формуляр или отчет.

Преобразуване на макроси, които са добавени към формуляр или отчет

Този процес преобразува във VBA всички макроси, които са посочени (или вградени) във формуляр или отчет (или техни контроли), и добавя кода на VBA към модула на класа на формуляра или отчета. Модулът на класа става част от формуляра или отчета и се премества заедно с тях, ако формулярът или отчетът бъдат преместени или копирани.

  1. В навигационния екран щракнете с десния бутон върху формуляра или отчета и след това щракнете върху Режим на проектиране.

  2. В раздела Проектиране на формуляр , в групата Инструменти щракнете върху Преобразуване на макроси на формуляр във Visual Basic или Преобразуване на макроси на отчет във Visual Basic.

  3. В диалоговия прозорец Преобразуване на макроси на формуляр или Преобразуване на макроси на отчет изберете дали искате Access да добавите код за обработване на грешки към функциите, които генерира. Също така, ако имате коментари в макросите, изберете дали искате да бъдат включени като коментари във функциите. Щракнете върху Преобразувай, за да продължите.

    Ако за формуляра или отчета не съществува модул на клас, Access създава такъв и добавя процедура към модула за всеки макрос, който е свързан с формуляра или отчета. Access променя и свойствата на събитието на формуляра или отчета, така че да изпълняват новите VBA процедури вместо макросите.

  4. За да прегледате и редактирате кода на VBA:

    1. Докато формулярът или отчетът е все още отворен в изгледа за проектиране, ако списъкът със свойства не е вече показан, натиснете F4, за да го покажете.

    2. В раздела Събитие на списъка със свойства щракнете в някое поле на свойство, което показва [Процедура за обработка на събитие], и след това щракнете върху бутона за компилация, Изображение на бутон. За да прегледате свойствата за събития на определена контрола, щракнете върху контролата, за да я изберете. За да прегледате свойствата за събития на целия формуляр или отчет, изберете Формуляр или Отчет от падащия списък в горната част на списъка със свойства.

      Access отваря редактора на Visual Basic и показва процедурата за събитие в модула на класа. Можете да превъртите нагоре или надолу, за да прегледате други процедури, които са в същия модул на клас.

Преобразуване на глобални макроси

  1. В навигационния екран щракнете с десния бутон върху макроса, който искате да преобразувате, и след това щракнете върху Режим на проектиране.

  2. В раздела Проектиране на макрос , в групата Инструменти щракнете върху Преобразуване на макроси във Visual Basic.

  3. В диалоговия прозорец Преобразуване на макрос изберете желаните опции и след това щракнете върху Преобразувай.

    Access преобразува макроса и отваря редактора на Visual Basic.

  4. За да прегледате и редактирате кода на VBA:

    1. Ако прозорецът на проекта не е показан в редактора на Visual Basic, в менюто Изглед щракнете върху Прозорец на проекта.

    2. Разгънете дървото под името на базата данни, в която работите.

    3. Под Модули щракнете двукратно върху модула Преобразуван макрос – име на макроса.

      Редакторът на Visual Basic отваря модула.

Добавяне на VBA функция към свойство за събитие

Когато преобразувате глобален макрос във VBA, кодът на VBA се поставя в стандартен модул. За разлика от модула на клас, стандартният модул не е част от формуляр или отчет. Най-вероятно ще искате да свържете функцията със свойство за събитие във формуляр, отчет или контрола, така че кодът да се изпълнява точно когато и където искате. За да направите това, можете или да копирате кода на VBA в модул на клас и след това да го свържете със свойство за събитие, или да извикате специално стандартния модул от свойство за събитие с помощта на процедурата по-долу.

  1. Запишете си името на функцията в редактора на Visual Basic. Ако например сте преобразували макрос с име MyMacro, името на функцията ще бъде MyMacro().

  2. Затворете редактора на Visual Basic.

  3. В навигационния екран щракнете с десния бутон върху формуляра или отчета, с който искате да свържете функцията, след което щракнете върху Режим на проектиране.

  4. Щракнете върху контролата или секцията, с която искате да свържете функцията.

  5. Ако списъкът със свойства още не е показан, натиснете F4, за да го покажете.

  6. В раздела Събитие на списъка със свойства щракнете в полето на свойството за събитие, с което искате да свържете функцията.

  7. В полето на свойството въведете знак за равенство (=), последван от името на функцията, като например =MyMacro() . Не забравяйте да включите скобите.

  8. Запишете формуляра или отчета, като щракнете върху Запиши в лентата с инструменти за бърз достъп.

  9. Щракнете двукратно върху формуляра или отчета в навигационния екран и го тествайте, за да проверите дали кодът се изпълнява както трябва.

Вече сте запознати с основните стъпки за добавяне на код на VBA към вашата база данни. Тази статия описва само основните неща за започване; има много отлични книги за справка и онлайн ресурси, които могат да ви помогнат да изградите уменията си за програмиране.

Вж. също

Създаване на макрос на потребителския интерфейс

Изпълнение на макрос на Access с помощта на клавишна комбинация

Автоматизиране на събития при стартиране с макрос

Създаване на макрос, който се изпълнява, когато отворите база данни

Ред на събитията за обекти на бази данни

Най-горе на страницата

Нуждаете ли се от още помощ?

Искате ли още опции?

Разгледайте ползите от абонамента, прегледайте курсовете за обучение, научете как да защитите устройството си и още.

Общностите ви помагат да задавате и отговаряте на въпроси, да давате обратна връзка и да получавате информация от експерти с богати знания.