Когато създавате нова база данни, обикновено започвате със създаването на обекти на базата данни, например таблици, формуляри и отчети. В някакъв момент може да се наложи да добавите програмиране, за да автоматизирате процеси и да свържете тези обекти. Тази статия ви запознава с инструментите за програмиране в Access.
В тази статия
- Какво е програмиране?
- Макрос или код на VBA трябва да използвам?
- Използване на съветника за командни бутони за изпълняване на чести задачи за програмиране
- Разбиране на макросите
- Разбиране на кода на VBA
- Преобразуване на макроси в код на VBA
Какво е програмиране?
В 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 кода само ако сте сигурни, че базата данни идва от надежден източник. Когато създавате база данни, която ще се използва от други хора, опитайте да избегнете включването на инструменти за програмиране, които изискват потребителят изрично да се довери на базата данни. Общи техники за избягване на това изискване се появяват по-нататък в този раздел.
За да защитите вашата база данни, опитайте да използвате макроси, когато можете, и използвайте 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, и да извикате функции в библиотеки за динамично свързване на Windows (DLLs). - Манипулиране на записи един по един. Можете да го използвате
VBA, за да преминете през набор от записи един по един и да изпълните операция с всеки запис. За разлика от това, макросите работят с цели набори от записи наведнъж.
Използване на съветника за командни бутони за извършване на чести задачи за програмиране
Ако добавяте команден бутон към формуляр, съветникът за командни бутони може да ви помогне да започнете с програмирането. Съветникът ви помага да създадете команден бутон, който изпълнява конкретна задача. Във файл на Access (.accdb) съветникът създава макрос, който е вграден в свойството OnClick на командния бутон. Във файл .mdb (or .adp ) съветникът създава VBA код, тъй като вградените макроси не са налични в тези файлови формати. И в двата случая можете след това да промените или да подобрите макроса или VBA кода, за да отговаря по-добре на вашите нужди.
В навигационния екран щракнете с десния бутон върху формуляра, в който искате да добавите командния бутон, след което щракнете върху Изглед на проектиране.
В раздела Проектиране на формуляр щракнете върху стрелката надолу, за да покажете галерията "Контроли ", и след това се уверете, че е избрано "Използване на съветници за контроли ".
В раздела "Проектиране на формуляр", в галерията "Контроли" щракнете върху "Бутон".
В мрежата за проектиране на формуляр щракнете там, където искате да се постави командният бутон. Съветникът за командни бутони се стартира.
В първата страница на съветника щракнете върху всяка категория в списъка Категории, за да видите кои действия съветникът може да програмира да бъдат изпълнявани от командния бутон. В списъка Действия изберете желаното действие и след това щракнете върху Напред.
Щракнете или върху опцията Текст, или върху опцията Картина – в зависимост от това дали искате на командния бутон да се показва текст, или картина.
- Ако искате да се показва текст, можете да редактирате текста в полето до опцията Текст.
- Ако искате да се показва картина, съветникът предлага картина в списъка. Ако искате да изберете друга картина, поставете отметка в квадратчето Покажи всички картини, за да покажете списък на всички картини за командни бутони, предоставяни от Access, или щракнете върху Преглед, за да изберете съхранена на друго място картина. Щракнете върху Напред.
Въведете смислено име за командния бутон. Тази стъпка не е задължителна и името не се показва в командния бутон. Въпреки това е добра идея да въведете смислено име, така че, когато по-късно ви се наложи да препратите към командния бутон – например когато задавате реда на разделите за контроли във вашия формуляр, да можете по-лесно да различавате командните бутони. Ако командният бутон затваря формуляра, можете да го наречете
cmdCloseнапример илиCommandClose.Щракнете върху Готово. 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 , за да го покажете.
В раздела Събитие на списъка със свойства щракнете в полето на свойство, което се показва
[Event Procedure]и след това щракнете върху бутона Компилация . За да прегледате свойствата за събития на определена контрола, щракнете върху контролата, за да я изберете. За да прегледате свойствата за събития на целия формуляр или отчет, изберете Формуляр или Отчет от падащия списък в горната част на списъка със свойства.
Access отваря редактора на Visual Basic и показва процедурата за събития в модула на класа. Можете да превъртите нагоре или надолу, за да прегледате други процедури, които са в същия модул на клас.
Преобразуване на глобални макроси
В навигационния екран щракнете с десния бутон върху макроса, който искате да преобразувате, и след това щракнете върху Режим на проектиране.
В раздела "Проектиране на макрос ", в групата "Инструменти " щракнете върху "Преобразуване на макрос във Visual Basic".
В диалоговия прозорец Преобразуване на макрос изберете желаните опции и след това щракнете върху Преобразувай. Access преобразува макроса и отваря редактора на Visual Basic.
За да прегледате и редактирате
VBAкода:- Ако прозорецът на проекта не е показан в редактора на Visual Basic, в менюто Изглед щракнете върху Прозорец на проекта.
- Разгънете дървото под името на базата данни, в която работите.
- Под Модули щракнете двукратно върху модула
Converted Macro-<macro name>. Редакторът на Visual Basic отваря модула.
Добавяне на VBA функция към свойство за събитие
Когато преобразувате глобален макрос в VBA, кодът VBA се поставя в стандартен модул. За разлика от модула на клас, стандартният модул не е част от формуляр или отчет. Най-вероятно ще искате да свържете функцията със свойство за събитие във формуляр, отчет или контрола, така че кодът да се изпълнява точно когато и където искате. За да направите това, можете да копирате кода VBA в модул на клас и след това да го свържете със свойство за събитие или да извикате специално стандартния модул от свойство за събитие с помощта на процедурата по-долу.
- Запишете си името на функцията в редактора на Visual Basic. Ако например сте преобразували макрос с име
MyMacro, името на функцията ще бъдеMyMacro(). - Затворете редактора на Visual Basic.
- В навигационния екран щракнете с десния бутон върху формуляра или отчета, с който искате да свържете функцията, и щракнете върху "Режим на проектиране".
- Щракнете върху контролата или секцията, с която искате да свържете функцията.
- Ако списъкът със свойства още не е показан, натиснете F4 , за да го покажете.
- В раздела Събитие на списъка със свойства щракнете в полето на свойството за събитие, с което искате да свържете функцията.
- В полето на свойството въведете знак за равенство (
=), последван от името на функцията,=MyMacro()като например . Не забравяйте да включите скобите. - Запишете формуляра или отчета, като щракнете върху Запиши в лентата с инструменти за бърз достъп.
- Щракнете двукратно върху формуляра или отчета в навигационния екран и го тествайте, за да проверите дали кодът се изпълнява както трябва.
Вече сте запознати с основните стъпки за добавяне VBA на код към вашата база данни. Тази статия описва само основните неща за започване. Много отлични справочници и онлайн ресурси могат да ви помогнат да изградите уменията си за програмиране.
Вж. също
Създаване на макрос на потребителския интерфейс
Изпълнение на макрос на Access с помощта на клавишна комбинация
Автоматизиране на събития при стартиране с макрос
Създаване на макрос, който се изпълнява, когато отворите база данни