В Microsoft Access макросите, които са прикачени към обекти на потребителския интерфейс (ПИ), като командни бутони, текстови полета, формуляри и отчети, се наричат макроси за потребителски интерфейс. Това ги отличава от макросите с данни, които са прикачени към таблици. Можете да използвате макроси (UI), за да автоматизирате последователност от действия, като например отваряне на друг обект, прилагане на филтър, стартиране на операция за експортиране и много други задачи. Тази статия ви запознава с обновения конструктор на макроси и ви показва основните задачи, включени в създаването на макрос за потребителски интерфейс.
Забележка
Тази статия не се отнася за уеб приложенията на Access.
В тази статия
- Общ преглед
- Конструктор на макроси
- Създаване на самостоятелен макрос
- Създаване на вграден макрос
- Добавяне на действия към макрос
- Управление на програмния поток с If, Else If и Else
- Създаване на подмакроси
- Групиране на свързани действия заедно
- Разгъване и свиване на макрокоманди или блокове
- Макродействия за копиране и поставяне
- Споделяне на макрос с други хора
- Изпълнение на макрос
- Отстраняване на грешки в макрос
- Преобразуване на макрос в код на VBA
Общ преглед
Макросите могат да се съдържат в макрообекти (понякога наричани самостоятелни макроси) или могат да бъдат вградени в свойства на събития на формуляри, отчети или контроли. Вградените макроси стават част от обекта или контролата, където са вградени. Макрообектите се виждат в навигационния екран, под "Макроси"; Вградените макроси не са.
Всеки макрос се състои от едно или повече макродействия. В зависимост от контекста, в който работите, е възможно някои макрокоманди да не са налични за използване.
Конструктор на макроси
Ето някои от основните основни характеристики на конструктора на макроси.
- Каталог на действия Макрокомандите са организирани по тип и с възможност за търсене.
- IntelliSense Когато въвеждате изрази, IntelliSense предлага възможни стойности и ви позволява да изберете правилната.
- Клавишни комбинации Използвайте клавишни комбинации за по-бързо и по-лесно писане на макроси.
- Поток на програмата Създаване на по-четливи макроси с редове за коментар и групи от действия.
- Условни изрази Позволяват по-сложно логическо изпълнение с поддръжка на вложени файлове If/Else/Else If.
- Повторно използване на макроси Каталогът с действия показва другите макроси, които сте създали, което ви позволява да ги копирате в макроса, върху който работите.
- По-лесно споделяне Копирайте макрос, след което го поставете като XML в имейл, публикация в дискусионна група, блог или примерен уеб сайт с код.
Ето видео, което ви превежда през основните области на конструктора на макроси.
Създаване на самостоятелен макрос
Тази процедура създава самостоятелен макрообект, който ще се появи под "Макроси " в навигационния екран. Самостоятелните макроси са полезни, когато искате да го използвате повторно на много места в приложението. Чрез извикване на макроса от други макроси можете да избегнете дублирането на един и същ код на много места.
В раздела Създаване, в групата Макроси и код щракнете върху Макрос.
Access отваря конструктора на макроси.
В лентата с инструменти за бърз достъп щракнете върху "Запиши".
В диалоговия прозорец "Запиши като " въведете име за макроса и след това щракнете върху OK.
Продължете с раздела Добавяне на действия към макрос.
Създаване на вграден макрос
Тази процедура създава макрос, който е вграден в свойство на събитие на обект. Този макрос не се появява в навигационния екран, но може да бъде извикан от събития, като например при зареждане или при щракване.
Тъй като макросът става част от обекта на формуляра или отчета, вградените макроси се препоръчват за автоматизиране на задачи, които са специфични за конкретен формуляр или отчет.
В навигационния екран щракнете с десния бутон върху формуляра или отчета, който ще съдържа макроса, и след това щракнете върху "Изглед на оформление".
Ако списъкът със свойства още не е показан, натиснете F4, за да го покажете.
Щракнете върху контролата или секцията, съдържаща свойството на събитието, в което искате да вградите макрос. Можете също да изберете контролата или секцията (или целия формуляр или отчет) с помощта на падащия списък под "Тип на селекцията " в горния край на списъка със свойства.
В прозореца на задачите "Списък на свойствата" щракнете върху раздела "Събитие ".
Щракнете в полето на свойството за събитието, което искате да активира макроса. Например за команден бутон, ако искате макросът да се изпълнява при щракване върху бутона, щракнете в полето на свойството "При щракване ".
Ако полето на свойството съдържа думите [Вграден макрос], това означава, че за това събитие вече е създаден макрос. Можете да редактирате макроса, като продължите с останалите стъпки в тази процедура.
Ако полето на свойството съдържа думите [Процедура за събитие], това означава, че за това събитие вече е създадена процедура на Visual Basic for Applications (VBA). Преди да можете да вградите макрос в събитието, ще трябва да премахнете процедурата. Можете да направите това, като изтриете думите [Процедура за обработка на събитие], но трябва първо да проверите процедурата за събитие, за да се уверите, че премахването й няма да наруши необходимата функционалност в базата данни. В някои случаи можете да пресъздадете функционалността на VBA процедурата с помощта на вграден макрос.
Щракнете върху бутона "Компилация "
.Ако се покаже диалоговият прозорец "Избор на конструктор ", уверете се, че е избран конструкторът на макроси , и след това щракнете върху OK.
Access отваря конструктора на макроси. Продължете със следващата част, за да добавите действия към макроса.
Добавяне на действия към макрос
Действията са отделни команди, които съставят един макрос, и всяка се именува според това, което прави, например FindRecord или CloseDatabase.
Стъпка 1: Преглед или търсене на макрокоманда
Първата стъпка при добавянето на действие е намирането му в падащия списък " Добавяне на ново действие " или в каталога на действията.
Забележка
По подразбиране падащият списък "Добавяне на ново действие " и каталогът за действия показват само действията, които ще се изпълняват в ненадеждни бази данни. За да видите всички действия:
- В раздела " Проектиране ", в групата "Показване/скриване " щракнете върху "Показване на всички действия".
Ако каталогът с действия не е показан, в раздела "Проектиране", в групата "Показване/скриване" щракнете върху "Каталог на действия".
За да намерите действие, използвайте един от следните методи:
- Щракнете върху стрелката в падащия списък " Добавяне на ново действие " и превъртете надолу, за да намерите действието. Елементите от потока на програмата са изброени първи, а след това макрокомандите са изброени по азбучен ред.
- Потърсете действието в екрана "Каталог с действия". Действията са групирани по категории. Разгънете всяка категория, за да видите действията. Ако изберете действие, в долната част на каталога с действия се появява кратко описание на действието.
- Потърсете действието в екрана "Каталог с действия", като въведете в полето за търсене в горния край на екрана. Докато въвеждате, списъкът с действия се филтрира, за да покаже всички макроси, които съдържат този текст. Access търси текста, който въвеждате, както в имената на макроси, така и в техните описания.
Стъпка 2: Добавяне на действие към макрос
След като намерите желаното макрокоманда, добавете го към макроса с помощта на един от следните методи:
Изберете действие в списъка " Добавяне на ново действие " или просто започнете да въвеждате името на действието в полето. Access добавя действието на мястото, където е показан списъкът "Добавяне на ново действие ".
Плъзнете действието от каталога с действия в екрана с макроси. Появява се лента за вмъкване, за да ви покаже къде ще бъде вмъкнато действието, когато отпуснете бутона на мишката.
Щракнете двукратно върху действието в каталога с действия.
Ако е избрано действие в екрана с макроси, Access добавя новото действие точно под избраното.
Ако в екрана с макроси е избран блок If, Else If, Else или Submacro, Access добавя новото действие към този блок.
Ако в екрана на макроса не е избрано действие или блок, Access добавя новото действие в края на макроса.
Забележка
Ако вече сте създали един или повече макроси, те са изброени под възела "В тази база данни " в каталога с действия.
- Плъзването на самостоятелен макрос (такъв, който е в списъка под "Макроси") в екрана с макроси създава действие RunMacro , което изпълнява макроса, който сте плъзнали. След това можете да използвате падащия списък, за да извикате подмакроси, ако има такива.
- Ако просто искате да копирате действията от самостоятелен макрос в текущия макрос (вместо да създавате действието RunMacro ), щракнете с десния бутон върху него в каталога с действия и след това щракнете върху "Добавяне на копие на макрос".
- Плъзгането на вграден макрос (такъв, който е в списъка под обект на формуляр или отчет) в екрана на макроса копира действията от този макрос в текущия макрос.
Можете също да създадете действие с плъзгане на обект на база данни от навигационния екран в екрана с макроси. Ако плъзнете таблица, заявка, формуляр, отчет или модул в екрана с макроси, Access добавя действие, което отваря таблицата, заявката, формуляра или отчета. Ако плъзнете друг макрос в екрана с макроси, Access добавя действие, което изпълнява макроса.
Стъпка 3: Попълване на аргументи
Повечето макрокоманди изискват поне един аргумент. Можете да видите описание на всеки аргумент, като изберете действието и след това преместите показалеца на мишката над аргументите. За много аргументи можете да изберете стойност от падащ списък. Ако аргументът изисква да въведете израз, IntelliSense ви помага да въведете израза, като предлага възможни стойности, докато въвеждате, както е показано на следната илюстрация:
Когато видите стойност, която искате да използвате, я добавете към вашия израз, като щракнете двукратно върху нея или използвате клавишите със стрелки, за да я маркирате, и след това натиснете клавиша TAB или ENTER.
За повече информация относно създаването на изрази вж. статията Въведение в изразите.
За използването на IntelliSense със свойства в уеб бази данни
Когато създавате вграден макрос за потребителски интерфейс в съвместим с уеб формуляр, IntelliSense ви позволява да добавите всяко свойство на формуляр към израз. Обаче в една уеб база данни само до подмножество от свойства на формуляр може да се осъществи достъп чрез макроси за потребителски интерфейс. Ако например имате контрола с име Control1 във формуляр с име Form1, IntelliSense ще ви позволи да добавите [Формуляри]! [Формуляр1]! [Контрола1]. [ControlSource] на израз в макрос за потребителски интерфейс. Ако обаче след това публикувате базата данни в Access Services, макросът, съдържащ този израз, ще генерира грешка, когато той се изпълнява на сървъра.
Следващата таблица показва свойствата, които можете да използвате в макроси за потребителски интерфейс в уеб бази данни:
Преместване на действие
Действията се изпълняват в реда от горния до долния край на макроса. За да преместите действие нагоре или надолу в макроса, използвайте един от следните методи:
- Плъзнете действието нагоре или надолу до желаното от вас място.
- Изберете действието и след това натиснете CTRL+СТРЕЛКА НАГОРЕ или CTRL+СТРЕЛКА НАДОЛУ.
- Изберете действието и след това щракнете върху стрелката "Премести нагоре " или "Премести надолу " от дясната страна на екрана с макроси.
Изтриване на действие
За да изтриете макродействие:
Изберете действието и след това натиснете клавиша DELETE. Можете също да щракнете върху бутона за изтриване (X) от дясната страна на екрана с макроси.
Забележка
- Ако изтриете блок от действия, като например блок If или групов блок, всички действия в блока също се изтриват.
- Командите "Премести нагоре", "Премести надолу" и "Изтрий" са налични и в контекстното меню, което се появява, когато щракнете с десния бутон върху макрокоманда.
Управление на програмния поток с If, Else If и Else
За да изпълните макрокоманди само когато определени условия са изпълнени, използвайте блок IF . Това замества колоната "Условие ", която се използваше в по-ранни версии на Access. Можете да разширите блок If с блокове Else If и Else , подобно на други езици за последователно програмиране, като VBA.
Следващата илюстрация показва прост блок IF , включващ блоковете Else If и Else :
Блокът If се изпълнява, ако полето ExpirationDate е по-малко от текущата дата.
Блокът Else If се изпълнява, ако полето ExpirationDate е равно на текущата дата.
Блокът Else се изпълнява, ако никое от предишните блокове не го изпълнява.
Блокът "If " свършва тук.
Добавяне на блок ''If'' към макрос
- Изберете "If " от падащия списък "Добавяне на ново действие " или го плъзнете от екрана "Каталог с действия" в екрана "Макроси".
- В полето в горната част на блока "If " въведете израз, който определя кога ще се изпълни блокът. Изразът трябва да бъде булев (т.е. такъв, който дава за резултат или да, или "Не").
- Добавете действия към блока "If ", като ги изберете от падащия списък " Добавяне на ново действие ", който се появява в блока, или като ги плъзнете от екрана "Каталог с действия" в блока "If ".
Добавяне на else или else If блокира към блок "If"
Изберете блока IF, след което в долния десен ъгъл на блока щракнете върху Add Else или Add Else If.
Ако добавяте блок Else If , въведете израз, който определя кога ще се изпълни блокът. Изразът трябва да е булев (т.е. такъв, който дава за резултат или True, или False).
Добавете действия към блока Else If или Else , като ги изберете от падащия списък " Добавяне на ново действие ", който се появява в блока, или като ги плъзнете от екрана "Каталог с действия" в блока.
Забележка
- Командите за добавяне на блокове If, Else If и Else са налични в контекстното меню, което се появява, когато щракнете с десния бутон върху макрокоманда.
- If блокове могат да се вложат на дълбочина до 10 нива.
Създаване на подмакроси
Всеки макрос може да съдържа по няколко подмакроса. Подмакросът е предназначен да бъде извикан по име от макрокомандите RunMacro или OnError .
Добавяте блок "Подмакрос " към макрос по същия начин, по който добавяте макрокоманда, както е описано в раздела "Добавяне на действия към макрос". След като сте добавили блок с подмакроси , можете да плъзгате макрокоманди в него или да избирате действия от списъка " Добавяне на ново действие ", който се показва в блока.
Забележка
Можете също да създадете блок Submacro , като изберете едно или повече действия, щракнете с десния бутон върху тях и след това изберете "Направи блок от подмакрос".
Подмакросите трябва винаги да бъдат последните блокове в макроса; Не можете да добавяте действия (с изключение на повече подмакроси) под подмакрос. Ако изпълните макрос, който съдържа само подмакроси, без специално да наименувате подмакроса, който искате, ще се изпълни само първият подмакрос.
За да извикате подмакрос (например в свойство на събитие или с помощта на действието RunMacro или действието OnError ), използвайте следния синтаксис:
Име на макрос.Име на субмакрос
Групиране на свързани действия заедно
Можете да подобрите четливостта на макрос, като групирате действия заедно и им присвоите смислено име. Можете например да групирате действия, които отварят и филтрират формуляр, в група с име "Отваряне и филтриране на формуляр". Това улеснява виждането кои действия са свързани помежду си. Груповото блокиране не влияе върху начина на изпълнение на действията и групата не може да бъде извиквана или изпълнявана самостоятелно. Основната му употреба е за етикетиране на група от действия, за да ви помогне да разберете макроса, докато го четете. Освен това, докато редактирате голям макрос, можете да свиете всеки групов блок до един ред, намалявайки превъртането, което трябва да направите.
Ако действията, които искате да групирате, вече са в макроса, използвайте тази процедура, за да ги добавите към групов блок:
- Изберете действията, които искате да групирате.
- Щракнете с десния бутон върху избраните действия и след това щракнете върху "Направи групово блокиране".
- В полето най-горе на блока " Група " въведете име за групата.
Ако действията не са налице:
- Плъзнете блока "Група " от каталога с действия в екрана с макроси.
- В полето най-горе на блока " Група " въведете име за групата.
- Плъзнете макрокоманди от каталога с действия в блока "Група " или изберете действия от списъка " Добавяне на ново действие ", който се показва в блока.
Груповите блокове могат да съдържат други групови блокове и могат да се вложат на максимум 9 нива на дълбочина.
Разгъване и свиване на макрокоманди или блокове
Когато създавате нов макрос, конструкторът на макроси показва макрокоманди, като всички аргументи са видими. В зависимост от размера на макроса, може да искате да свиете някои или всички макродействия (и блокове от действия), докато редактирате макроса. Това улеснява получаването на общ изглед на структурата на вашия макрос. При необходимост можете да разгънете някои или всички действия, за да ги редактирате.
Разгъване или свиване на отделно макродействие или блок
- Щракнете върху знака плюс (+) или минус (-) отляво на името на макроса или блока. Друга възможност е да натиснете клавишите със стрелка нагоре и стрелка надолу, за да изберете действие или блок, и след това натиснете клавишите със стрелка наляво или стрелка надясно, за да го свиете или разгънете.
Разгъване или свиване на всички макрокоманди (но не и блокове)
- В раздела " Проектиране ", в групата "Свиване/разгъване " щракнете върху "Разгъване на действията " или "Свиване на действията".
Разгъване или свиване на всички макрокоманди и блокове
- В раздела "Проектиране", в групата "Свиване/разгъване" щракнете върху "Разгъни всички" или "Свий всички".
Съвет
Можете да "надникнете" в свито действие, като преместите показалеца на мишката над действието. Access показва аргументите на действия в пояснение.
Макродействия за копиране и поставяне
Ако трябва да повторите действия, които вече сте добавили към макрос, можете да копирате и поставите съществуващите действия по същия начин, по който бихте направили с абзаци с текст в текстообработваща програма. Когато поставяте действия, те се вмъкват точно под текущо избраното действие. Ако е избран блок, действията се поставят вътре в блока.
Съвет
За да дублирате бързо избраните действия, задръжте натиснат клавиша CTRL и плъзнете действията до местоположението в макроса, където искате да се копират.
Споделяне на макрос с други хора
Когато копирате макрокоманди в клипборда, те могат да бъдат поставени като език XML (Extensible Markup Language) във всяко приложение, което приема текст. Това ви позволява да изпратите макрос на колега по имейл или да публикувате макроса във форум за обсъждане, блог или друг уеб сайт. След това получателят може да копира XML файла и да го постави в своя конструктор на макроси на Access. Макросът се създава отново по същия начин, по който сте го написали.
Изпълнение на макрос
Можете да изпълните макрос, като използвате някой от следните методи:
- Щракнете двукратно върху макроса в навигационния екран.
- Извикване на макроса с помощта на макрокомандата RunMacro или OnError .
- Въведете името на макроса в свойство за събитие на обект. Макросът ще се изпълни, когато това събитие се активира.
Отстраняване на грешки в макрос
Ако имате проблеми при изпълнението на макрос, има няколко инструмента, които можете да използвате, за да откриете източника на проблема.
Добавяне на действия за обработване на грешки към макрос
Препоръчваме да добавите действия за обработване на грешки към всеки макрос, докато го пишете, и да ги оставите в макроса за постоянно. Когато използвате този метод, Access показва описания на грешките, когато възникнат. Описанията на грешките ви помагат да разберете грешката, така че да можете да коригирате проблема по-бързо.
За да добавите към макрос подмакрос за управление на грешки, използвайте следната процедура:
- Отворете макроса в режим на проектиране.
- В долната част на макроса изберете "Подмакрос " от падащия списък "Добавяне на ново действие ".
- В полето непосредствено вдясно от думата подмакрос въведете име за подмакроса, като например ErrorHandler.
- От падащия списък "Добавяне на ново действие ", който се показва в блока Submacro , изберете макрокомандата MessageBox .
- В полето за съобщение въведете следния текст: =[MacroError].[ Описание]
- В долната част на макроса изберете OnError от падащия списък "Добавяне на ново действие ".
- Задайте име на макроса за аргумента "Отиване на".
- В полето Име на макрос въведете името на вашия подмакрос за обработване на грешки (в този пример ErrorHandler).
- Плъзнете макрокомандата OnError до най-горната част на макроса.
Следващата илюстрация показва макрос с действието OnError и подмакрос, който е наречен ErrorHandler.
Макрокомандата OnError се поставя най-отгоре в макроса и в случай на грешка извиква подмакроса ErrorHandler .
Подмакросът ErrorHandler се изпълнява само ако е извикан от действието OnError и показва прозорец за съобщение, което описва грешката.
Използване на командата "Единична стъпка"
Single Step е режим на отстраняване на грешки в макроси, който можете да използвате, за да изпълните макрос действие по действие. След извършване на всяко действие се показва диалогов прозорец, който показва информация за действието и всички кодове на грешки, възникнали в резултат от него. Тъй като обаче няма описание на грешката в диалоговия прозорец "Единична стъпка на макрос", препоръчваме ви да използвате метода с подмакроси за обработване на грешки, описан в предишния раздел.
За да стартирате режима "стъпка по стъпка":
- Отворете макроса в режим на проектиране.
- В раздела "Проектиране ", в групата "Инструменти " щракнете върху "Единична стъпка".
- Запишете и затворете макроса.
Следващия път, когато изпълните макроса, се показва диалоговият прозорец "Единична стъпка на макрос ". Диалоговият прозорец показва следната информация за всяко действие:
- Име на макрос
- Условие (за блока IF)
- Име на действие
- Аргументи
- Номер на грешка (номер на грешка 0 означава, че не е възникнала грешка)
Докато преминавате през действията, щракнете върху един от трите бутона в диалоговия прозорец:
За да видите информация за следващото действие в макроса, натиснете Step.
За да спрете всички макроси, които се изпълняват в момента, щракнете върху "Спри всички макроси". Режимът "стъпка по стъпка" ще остане в сила следващия път, когато изпълните макрос.
За да излезете от режима "стъпка по стъпка" и да продължите да изпълнявате макроса, щракнете върху "Продължи".
Забележка
- Ако натиснете Step след последното действие в макрос, режимът "единична стъпка" все още ще бъде в сила при следващото изпълнение на макроса.
- За да влезете в режим "стъпка по стъпка", докато се изпълнява макрос, натиснете CTRL+BREAK.
- За да влезете в режим "стъпка по стъпка" в определен момент от макрос, добавете макрокомандата SingleStep в този момент.
- Режимът "стъпка по стъпка" не е наличен в уеб база данни.
Преобразуване на макрос в код на VBA
Макросите предоставят подмножество на командите, налични в програмния език Visual Basic for Applications (VBA). Ако решите, че се нуждаете от повече функционалност, отколкото макросите могат да осигурят, можете лесно да конвертирате самостоятелен макрообект в код на VBA и след това да използвате разширения набор от функции, предоставян от VBA. Имайте предвид обаче, че VBA кодът няма да се изпълнява в браузър; Всеки VBA код, който добавите към уеб база данни, ще се изпълнява само когато базата данни е отворена в Access.
Забележка
Не можете да конвертирате вградени макроси в код на VBA.
За да конвертирате макрос в код на VBA:
- В навигационния екран щракнете с десния бутон върху макрообекта и след това щракнете върху "Режим на проектиране".
- В раздела " Проектиране ", в групата "Инструменти " щракнете върху "Преобразуване на макрос във Visual Basic".
- В диалоговия прозорец "Преобразуване на макрос " задайте дали искате да добавите код за обработване на грешки и коментарите към модула на VBA, а след това щракнете върху "Преобразуване".
Access потвърждава, че макросът е бил конвертиран, и отваря редактора на Visual Basic. Щракнете двукратно върху преобразувания макрос в екрана "Проект", за да прегледате и редактирате модула.