Макросы в субд microsoft acces. Макросы в access Для чего применяются в access макросы

В этой статье описываются макросы, доступные в базах данных Access, и рассказывается, как они могут помочь вам экономить время, автоматизируя часто выполняемые задачи. В ней рассматриваются основы создания и использования макросов, а также упоминаются улучшения макросов в Access.

Что такое макрос?

Макрос в Access - это инструмент, позволяющий автоматизировать задачи и добавлять функции в формы, отчеты и элементы управления. Например, добавив в форму кнопку, вы можете связать ее событие OnClick с макросом, включающим команды, которые должны выполняться при нажатии этой кнопки.

В Access можно рассматривать макросы как упрощенный язык программирования, код на котором создается в виде списка необходимых действий. Создавая макрос, вы выбираете каждое действие из раскрывающегося списка, а затем вводите для него необходимые сведения. С помощью макросов можно добавлять функции в формы, отчеты и элементы управления без необходимости писать код в модуле Visual Basic для приложений (VBA). В макросах доступно подмножество команд VBA, и большинство людей считают, что создать макрос легче, чем написать код VBA.

Предположим, вы хотите создать отчет непосредственно из одной из своих форм для ввода данных. Вы можете добавить в форму кнопку, а затем создать макрос, который открывает отчет. Макрос может быть либо автономным, т. е. отдельным объектом в базе данных, который связывается с событием OnClick кнопки, либо внедренным непосредственно в событие OnClick . В любом случае при нажатии кнопки макрос запускает и открывает отчет. Такие макросы обычно называют макросами пользовательского интерфейса.

Понятие макросов данных впервые появилось в Access 2010. С помощью макросов данных можно автоматизировать задачи и добавлять функции непосредственно в таблицы. Макросы данных и их действия вкладываются в определенные события таблиц, например добавление новой записи в таблицу.

Создать макрос можно с помощью конструктора макросов, который показан на приведенном ниже рисунке.

Примечание: Начиная с Access 2010, интерфейс конструктора макросов был изменен, чтобы создавать и редактировать макросы Access, а также делиться ими было еще проще.

Чтобы открыть конструктор макросов пользовательского интерфейса, сделайте следующее:

    На вкладке Создание в группе Макросы и код нажмите кнопку Макрос .

Чтобы открыть конструктор макросов данных, сделайте следующее:

    Откройте любую таблицу в режиме таблицы. На вкладке Таблица в группах До событий и После событий выберите одну из команд событий, например До изменения или После вставки .

Чтобы узнать больше о конструкторе макросов и о том, как создавать и тестировать макросы пользовательского интерфейса и данных, см. связанные статьи в разделе См. также в конце этой статьи.

Функции макросов в Access

В более ранних версиях Access многие популярные функции не удавалось выполнять без написания программного кода VBA. В текущих версиях Access были добавлены новые функции и действия макросов, избавляющие от необходимости в коде. Это упрощает добавление функций в базу данных и помогает защитить ее.

    Внедренные макросы Вы можете внедрять макросы в любые события, предоставляемые формой, отчетом или элементом управления. Внедренный макрос не отображается в области навигации. Он становится частью формы, отчета или элемента управления, в котором он был создан. Если создать копию формы, отчета или элемента управления, содержащего встроенные макросы, то эти макросы также будут присутствовать в копии.

    Повышенная безопасность Если кнопка Показать все действия не выделена в конструкторе макросов, то для использования доступны только те действия макросов и аргументы RunCommand, для выполнения которых не требуется статус доверенной базы данных. Макрос, созданный с использованием этих действий, будет выполняться, только если база данных находится в отключенном режиме (когда выполнение VBA запрещено). Базам данных, которые содержат действия макросов, не включенные в список доверенных (или базам данных с кодом VBA), необходимо явно предоставлять статус доверенных.

    Обработка ошибок и устранение неполадок Access предоставляет действия макросов, включая OnError (аналогично оператору "On Error" в VBA) и ClearMacroError , позволяющие выполнять определенные действия, если во время работы макроса возникнет ошибка. Кроме того, действие макроса SingleStep позволяет переходить в режим пошагового выполнения из любой точки макроса, чтобы поэтапно просматривать его работу.

    Временные переменные Три действия макросов (SetTempVar , RemoveTempVar и RemoveAllTempVars ) позволяют создавать и использовать временные переменные в макросах. Их можно использовать в условных выражениях, чтобы управлять выполняющимися макросами, передавать данные в отчеты или формы либо из них, а также при выполнении любой другой задачи, требующей временного хранилища для значения. Эти временные переменные также доступны в VBA, поэтому с их помощью также можно передавать данные в модули VBA и из них.

Дополнительные сведения о действиях макросов

Во время работы в конструкторе макросов вы можете получить дополнительные сведения о действии или аргументе, щелкнув его и прочитав описание в поле в правом нижнем углу окна конструктора макросов. Кроме того, с каждым действием макроса связана статья справки. Чтобы узнать больше о действии, выберите его в списке действий и нажмите клавишу F1.

Создание макросов в Access 2007

Макрос представляет набор макрокоманд, который создается для автоматизации часто выполняемых задач.

Конструктор макросов

Макросы создаются в специально предназначенном для этого окне Конструктора макросов. Для создания макроса необходимо выбрать вкладку Создать и в раскрывающейся кнопке Макрос выбрать команду Макрос . Откроется окно конструктора макросов, которое состоит из панели описаний, расположенной в верхней части окна, и панели аргументов – в нижней. Панель описаний по умолчанию содержит три столбца Макрокоманда , Аргументы и Примечание .

В поле Макрокоманда можно выбрать необходимую команду (ОткрытьТаблицу, ОткрытьЗапрос, ОткрытьОтчет, ЗапускМакроса и т.д.) нажатием кнопкой мыши. Иначе в строку Макрокоманда можно просто перетащить любой объект базы данных (таблицу, форму и т.д.).

После выбора макрокоманды на панели аргументов окна конструктора макросов могут появиться строки, предназначенные для задания значений аргументов соответствующей макрокоманды. Набор строк на этой панели зависит от конкретной макрокоманды. Заданные значения аргументов также появляются во втором столбце Аргументы панели описаний.

Столбец Примечание служит для ввода комментария, который описывает выполняемое действие.

Рассмотрим простой способ создания макрокоманды. Например, разработаем ее для открытия таблицы Группы базы данных Студент .

    Вы уже открыли окно Конструктора макросов . Теперь с помощью мыши перетащите таблицу Группы из Области переходов в столбец Макрокоманда . В результате в нем появится макрокоманда Открыть таблицу, причем Access автоматически заполнит поля панели аргументов (рис.1).

    В поле Режим данных задайте значение Только чтение , что позволит сделать записи этой таблицы недоступными для редактирования.

Для того чтобы ввести значение аргумента макрокоманды вы можете выбрать аргумент из списка или ввести в его поле выражение. Справа от полей некоторых аргументов расположена кнопка построителя, в окне которого вводятся различные выражения. Перед выражением нужно ставить знак равенства (=), за исключением аргумента Выражение макрокоманды ЗадатьЗначение и аргумента Число повторов макрокоманды ЗапускМакроса .

Макрос может содержать несколько макрокоманд, которые выполняются последовательно. Добавим к созданной нами макрокоманде, которая открывает таблицу Группы в режиме Только чтение, добавим макрокоманду, сообщающую пользователю о том, что таблица Товары доступна только для просмотра информации.

Последовательность выполнения:

    Перейдите на следующую строку окна конструктора макросов и в столбце Макрокоманда выберите макрокоманду Сообщение .

    В поле Сообщение панели аргументов введите текст «Данные доступны только для просмотра ». Аргумент Сигнал служит для определения того, будет ли вывод сообщения сопровождаться звуковым сигналом. В аргументе Тип выберите вид диалогового окна. Укажите, например, значение Предупреждающее !. В поле аргумент Заголовок , позволяющего задать текст заголовка окна сообщения, введите текст «О данных» .

    Сохраните макрос под именем Открыть группы .

После запуска макроса будет отображена таблица Группы, открытая в режиме просмотра, и сообщение, представленное на рис.2.

Рассмотрим еще один пример. Допустим, вам необходимо создать макрос, открывающий форму Список .

    Откройте окно конструктора макросов и из окна базы данных перенесите в него форму Список .

    Аргумент Имя формы содержит список всех форм базы данных.

    Аргумент Режим определяет режим, в котором форма должна быть открыта. Он может принимать значения: Форма, Конструктор, Просмотр, Таблица и др.

    Аргумент Имя фильтра применяется для отбора и/или сортировки записей в форме. Это может быть запрос или фильтр, записанный в виде запроса.

    Аргумент Условие отбора определяет условие для от­бора записей, отображаемых в форме. Условие представляет собой выражение.

    Аргумент Режим данных определяет способ работы с данными и может принимать одно из значений: Добавление, Изменение или Только чтение.

    Аргумент Режим окна определяет тип окна: Обычное, Невидимое, Значок и Окно диалога.

    В поле Имя фильтра , воспользовавшись ранее созданным фильтром СР-11 , введите текст СР-11 .

    В новой строке макроса выберите макрокоманду Сообщение , а на панели аргументов введите текст сообщения: Фильтр 11 группа . Задайте тип диалогового окна вывода сообщения, выбрав значение Информационное аргумента Тип .

    Сохраните макрос под именем 11 группа .

Microsoft Access – это не только набор таблиц, хранящих взаимосвязанные данные, но и набор средств для работы с данными базы, таких как запросы, формы, отчеты, которые могут быть названы объектами приложения. С помощью кнопочных форм может быть создана панель управления приложением, обеспечивающего пользователя простой доступ ко всем его функциям. Добиться этого без использования средств программирования практически невозможно. Простейшим языком программирования и является язык макросов. Его изучение может рассматриваться как хороший способ введения в программирование на языке VBA.

Макрос – программа, состоящая из последовательности макрокоманд. Макрокоманда - это инструкция, ориентированная на выполнение определенного действия над объектами Access и их элементами. Например, макрокоманды можно использовать для выполнения следующих действий:

Для открытия (или закрытия) любой таблицы, запроса, формы или отчета в любом доступном режиме;

Для выполнения запроса на выборку или запроса на изменение;

Для выполнения действий в зависимости от значений в базе данных, форме или отчете;

Для запуска других макросов или процедур VBA;

Для применения фильтра и запуска приложений;

И многое другое.

Макросы могут быть запущены непосредственно из окна базы данных или окна макроса. Если макрос зависит от события в форме или отчете, его нужно связать с соответствующим событием и запускать при возникновении этого события.

Создание простого макроса

Чтобы создать простой макрос, нужно открыть окно базы данных, перейти на вкладку Макросы и нажать кнопку Создать . При этом открывается окно нового макроса.

Верхняя часть окна используется для определения нового макроса, а нижняя предназначена для ввода значений аргументов макрокоманд, включенных в макрос. В начале в верхней части присутствуют два столбца с заголовками Макрокоманда и Примечание . Можно увидеть все четыре столбца (рис.13.1), нажав кнопки Имена макросов и Условие на панели инструментов.

Макрокоманды, составляющие макрос, вводятся в столбец Макрокоманды (рис.13.2). Для ввода макрокоманды можно нажать в этом столбце кнопку раскрытия списка макрокоманд и выбрать нужную. В правой нижней части окна макроса выводится краткая справка, содержание которой зависит от положения курсора в верхней части окна макроса.

В языке макросов можно организовать выполнение макрокоманды или набора макрокоманд только при выполнении некоторых условий. Условие задается с помощью логических выражений и вводится в строку макрокоманды в столбец Условие.

Использование в макросах ссылок на объекты.

При обработке данных в базе данных необходимо уметь правильно ссылаться на эти данные. Ссылки на формы, отчеты, их элементы управления формируются по определенным правилам.

Ссылаться на объекты можно по имени, но нужно учесть, что в Access объекты объединяются в семейства. Формы объединены в семейство Формы (Forms), отчеты – в семейство Отчеты (Reports). Поэтому ссылка на объект включает имя семейства и, через восклицательный знак, имя объекта. Например, для ссылки на форму необходимо записать так: Forms ![Товары].

Рис. 13.1.Окно нового макроса

Рис.1 3 . 2 . Список макрокоманд в окне макроса

В ссылке на элемент управления вслед за именем объекта через восклицательный знак записывается имя элемента управления, заключенное в квадратные скобки. Например, в форме КАФЕДРА ссылка на элемент управления Надпись с именем Название записывается так: Forms ![КАФЕДРА]! [Название].

Forms ![Имя формы]! [Имя подчиненной формы]. Forms ![Элемент подчиненной формы]

Структура некоторых макрокоманд.

1. Макрокоманда ОткрытьФорму . Позволяет открывать форму и отбирать данные. Аргументы макрокоманды: Имя формы (из списка выбрать имя), Режим (форма, конструктор, просмотр и др.), Имя фильтра (имя запроса на выбор данных), Условие отбора (условие на языке SQL) и др.

2. Макрокоманда Закрыть . Закрывает форму, отчет, запрос и т.д. Аргументы макрокоманды: Тип объекта (форма, отчет, таблица и др), Имя объекта (Выбирается из списка), Сохранение (да, Нет, Подсказка)

3. Макрокоманда ПрименитьФильтр . Отбирает данные в открытой форме. Аргументы макрокоманды: Имя фильтра (имя запроса на выборку), Условия отбора (выражение SQL без слова WHERE).

4. Макрокоманда ЗадатьЗначение . Проводит вычисления в элементах управления форм, отчетов. Аргументы макрокоманды: Элемент (элемент управления типа Поле ), Выражение (Арифметическое выражение или значение).

5. Макрокоманда Печать . Печатает открытую форму, отчет. Аргументы макрокоманды: Распечатать (Все, Фрагмент, Страницы), Со страницы (Начальная страница печати), По страницу (Конечная страница печати), Разрешение (качество печати: например, среднее), Число копий .

6. Макрокоманда Выход . Осуществляет выход из Access. Аргументы макрокоманды: Параметры (Сохранить все, Подтверждение и др.).

Запуск макроса:

- из окна макроса - нажать кнопку Запуск на панели инструментов;

- из окна базы данных - нажать на вкладку Макросы , установить курсор на имени макроса и нажать кнопку Запуск ;

- из любого окна Access - следует выполнить команды

Сервис Макрос Выполнить макрос Указать имя макроса ОК

- автоматический запуск макроса при открытии базы данных - задать ему имя AutoExec .

Подсчет количества записей во всем отчете

1.Откройте отчет в режиме конструктора.

2.Добавьте вычисляемое поле в примечание отчета.

3.Чтобы открыть окно свойств, убедитесь, что нужное поле выбрано, и нажмите кнопку Свойства на панели инструментов.

4. Введите в ячейку свойства Данные вычисляемого поля выражение =Count(*). Это выражение использует функцию Count для подсчета всех записей отчета включая записи, имеющие пустые значения в некоторых полях.

Макрос. Макрокоманда или набор макрокоманд, используемый для автоматического выполнения некоторых операций.

Макросом называют набор из одной или более макрокоманд, выполняющих определенные операции, такие как открытие форм или печать отчетов. Макросы могут быть полезны для автоматизации часто выполняемых задач.

Работа с формами и отчетами существенно облегчается за счет использования макрокоманд. Microsoft Access предоставляет свыше 40 макрокоманд, которые вы можете включать в макросы. Макрокоманды выполняют такие действия, как открытие таблиц и форм, выполнение запросов, запуск других макросов, выбор пунктов меню, изменение размеров открытых окон и т. п. С их помощью вы можете даже осуществлять запуск других приложений, поддерживающих дина­мический обмен данных (DDE), например Microsoft Excel, и производить обмен данными между вашей базой данных и другими приложениями. Макрокоманды можно объединять в макрос и задавать условия их выполнения.

Microsoft Access предоставляет различные типы макрокоманд, позволяющие автоматизировать работу приложения. Вы можете использовать макросы для выполнения следующих действий:

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

С помощью макросов вы можете закрыть открытую таблицу, запрос,

форму или отчет;

Открытия отчета в режиме предварительного просмотра или непосредст­венного вывода на принтер. Вы можете вывести данные из отчета в файл в формате RTF (.rtf), в обычном текстовом формате (.txt) или в файл Microsoft Excel (.xls) и затем открыть их в Microsoft Word, WindowsNotepad или в Microsoft Excel;

Выполнения запроса на выборку или запроса на изменение. При этом

параметры запроса могут использовать значения элементов управления

любой открытой формы;

Выполнения действий в зависимости от значений в базе данных, форме или

отчете. Макросы могут запускать другие макросы и вызывать функ­ции

VBA. Вы можете прервать выполнение текущего макроса или всех

макросов, отменить событие, запустившее макрос, или даже выйти из

приложения;

Установки значения любого элемента управления формы или отчета. Можно эмулировать работу с клавиатурой и передавать вводимые с клавиатуры данные в системные окна диалога. С помощью макросов можно обновлять значения в любых элементах управления, источником данных которых является запрос;



Применения фильтра, перехода к любой записи и поиска данных в базовой таблице или запросе формы;

Определения специальной строки меню, замещающей стандартную. Вы можете сделать доступным или недоступным пункт специального меню, в том числе и контекстного, снять галочку или пометить его. Кроме того, с помощью макросов можно открыть или закрыть любую из стандартных или специальных панелей инструментов;

Выполнения команды любого меню Access;

Перемещения, изменения размеров, сворачивания или восстановления любого окна внутри рабочей области Access. Вы можете передавать фокус любому из окон или любому элементу управления в окне, выбирать страницу отчета и выводить ее в режиме предварительного просмотра;

Вывода на экран информационных сообщений и подачи звуковых сигналов для привлечения внимания к вашим сообщениям. Вы можете также отключать некоторые предупреждающие сообщения во время выполнения запросов на изменение;

Переименования любого объекта базы данных, копирования выбранного объекта в текущую или другую базу данных Access. Можете использовать макросы для сохранения или удаления объектов из вашей базы данных. Кроме того, макросы позволяют импортировать, экспортировать или связывать таблицы из других баз данных, импортировать или экспорти­ровать электронные таблицы и текстовые файлы;

Запуска приложения, а также для обмена данными с приложением с помощью механизма DDE или буфера обмена. Вы можете вывести данные из таблицы, формы, запроса или отчета в выходной файл и открыть его в соответствующем приложении. Можно также передать последователь­ность нажатий клавиш в приложение, ожидающее ввода с клавиатуры.

Рассмотрим другие возможности макросов. Командные кнопки, которые откры­вают и размещают формы и устанавливают значения полей, помогут переклю­чаться с одной задачи на другую. Вы можете создать сложнейшие процедуры редактирования, проверяющие правильность вводимых в форму данных, вклю­чая проверку данных в других таблицах.

Создание простых макросов

1. Чтобы начать работу с макросами, в окне базы данных щелкните левой кнопкой мышки на вкладку Макросы (Macros), на экране появится следующее окно:

Выбрана вкладкаМакросы

Рисунок 2

3. Верхняя часть окна используется для определения макроса, а нижняя предназначена для ввода значений аргументов макрокоманд, включенных в него. В верхней части присутствуют по крайней мере два столбца с заголовками Макрокоманда и Примечание. Нажав кнопки Имена макросов (1) и Условия (2) на панели инструментов, вы можете увидеть все четыре столбца, показанные на рисунке 3

Рисунок 3

Обратите внимание на область (4) в правой нижней части окна макроса, в которой

выводится краткая справка. Содержание сообщения меняется в зависимости от положения курсора в верхней части окна макроса (помните: для получения контекстной справки всегда можно нажать клавишу F1).

4. В столбце Макрокоманда задается одна из 49 макрокоманд, предоставляемых

Access. Если вы щелкнете в любой ячейке столбца Макрокоманда, то в правом конце ячейки появится кнопка (3) со стрелкой вниз. Нажатие этой кнопки откры­вает список макрокоманд, показанный на Рис. 4

Например, выберите в списке макрокоманду Сообщение. Она используется для открытия модального окна диалога с сообщением. Это прекрасный способ для вывода в приложении разного рода предупреждающих или информационных сообщений без создания для этого специальной формы.

Допустим, например, что сообщение представляет собой приветствие. В соот­ветствующую ячейку столбца Примечание введите текст Приглашение. Столбец Примечание особенно полезен для документирования сложных макросов, содержащих множество макрокоманд. В этом столбце мож­но вводить дополнительные комментарии, размещая их на строках, не содержа­щих макрокоманд.

После выбора макрокоманды, такой как Сообщение, Access выведет в нижней части окна макроса ее аргументы.

(Для перехода из верхней части окна макроса в нижнюю и обратно вы можете воспользоваться клавишей F6.)

Рисунок 4

Значение аргумента Сообщение представляет собой текст, выводи­мый Access в окне диалога, введем туда Приглашение . Аргумент Сигнал служит для воспроизведе­ния звукового сигнала при появлении окна диалога, введем Да . Аргумент Тип позволяет поместить в окно сообщения значок, например красный круг с белым перекрестием, выберем из приведенных альтернатив Информационное . В ячейку аргумента Заголовок вводится текст, отображае­мый в заголовке окна диалога (Полный текст сообщения: Добро пожаловать в новую базу данных.). Т.е. окно создания простого макроса с использованием макрокоманды Сообщение будет выглядеть следующим образом (Рис 5.):

Рисунок 5

В столбце Макрокоманда с помощью кнопки (6) можно добавить еще строчку для макрокоманды, а с помощью кнопки (5) – удалить любую строку.

5 Перед запуском макрос необходимо сохранить. Выберите в строке меню Microsoft Access команду Файл | Сохранить (или Файл | Сохранить как/экспорт). При использовании команды Файл | Сохранить Access откроет окно диалога, приведенное на Рис.6. Введите имя Макрос1 и нажмите кнопку ОК, чтобы сохранить макрос.

6 Некоторые макросы (как только что созданный) могут быть запущены непо­средственно из окна базы данных или окна макроса, поскольку они не зависят от элементов управления открытой формы или отчета. Если макрос зависит от формы или отчета, его надо связать с соответствующим событием и запускать при его возникновении. Перед запуском макроса неплохо проверить его работу, выполнив макрокоманды в пошаговом режиме.

Чтобы начать пошаговую проверку, нажмите кнопку (7) По шагам, а затем - Запуск (8) . Access выведет на экран окно диалога Пошаговое исполнение макроса, представленное на Рис. 7

Рисунок 6

Рисунок 7

7 Если вы нажмете кнопку (9) Шаг, запустится макрокоманда, представленная в окне диалога, и Access выведет на экран модальное окно диалога с созданным нами сообщением, показанное на Рис.8:

Рисунок 8

8 Нажмите кнопку ОК, чтобы закрыть окно. Если в макросе определено несколько макрокоманд, после первого шага вы вернетесь в окно диалога Пошаговое исполнение макроса, которое покажет следую­щую готовую к исполнению макрокоманду. Поскольку в нашем случае макрос состоит всего из одной макрокоманды, Access возвратит вас в окно макроса (Рис 5). По окончании еще раз нажмите кнопку (7) По шагам, чтобы отменить пошаговый режим. В противном случае вы останетесь в пошаговом режиме при выполнении любого макроса, пока не закроете и не перезапустите Access.

Примечание:

Если во время выполнения приложения в каком-нибудь макросе встретится ошибка, Access сначала выведет окно диалога, объясняющее ее. Затем вы увидите похожее на Пошаговое исполнение макроса окно диалога Ошибка выполнения макрокоманды с информацией о макрокоманде, вызвавшей ошибку. В этот момент можно нажать только кнопку Прервать и отредактировать макрос, чтобы устранить причину ошибки.

Macros can be contained in macro objects (sometimes called standalone macros), or they can be embedded into the event properties of forms, reports, or controls. Embedded macros become part of the object or control in which they are embedded. Macro objects are visible in the Navigation Pane, under Macros ; embedded macros are not.

Each macro is made up of one or more macro actions. Depending on the context you are working in, some macro actions may not be available for use.

Macro Builder

Here are some of the main feature highlights of the Macro Builder.

    Action Catalog Macro actions are organized by type and searchable.

    IntelliSense When typing expressions, IntelliSense suggests possible values and lets you select the correct one.

    Keyboard shortcuts Use key combinations for faster, easier macro writing.

    Program flow Create more readable macros with comment lines and groups of actions.

    Conditional statements Allow for more complex logic execution with support for nested If/Else/Else If.

    Macro reuse The Action Catalog displays other macros you have created, letting you copy them into the one you’re working on.

    Easier sharing Copy a macro, then paste it as XML into an email, newsgroup post, blog, or code sample web site.

Here"s a video that walks you through the main areas of the Macro Builder.

Create a standalone macro

This procedure creates a standalone macro object that will appear under Macros in the Navigation Pane. Standalone macros are useful when you want to reuse the macro in many places of the application. By calling the macro from other macros, you can avoid duplicating the same code in multiple places.

Create an embedded macro

This procedure creates a macro that is embedded in an event property of an object. Such a macro does not appear in the Navigation Pane, but can be called from events such as On Load or On Click .

Because the macro becomes part of the form or report object, embedded macros are recommended for automating tasks that are specific to a particular form or report.

Add actions to a macro

Actions are the individual commands that make up a macro, and each is named according to what it does, for example, FindRecord or CloseDatabase .

Step 1: Browse or search for a macro action

The first step in adding an action is finding it in the Add New Action drop-down list or in the Action Catalog.

    By default, the Add New Action drop-down list and the Action Catalog only display the actions that will execute in non-trusted databases. To see all actions:

    • On the Design tab, in the Show/Hide group, click Show All Actions .

    If the Action Catalog is not displayed, on the Design tab, in the Show/Hide group, click Action Catalog .

To find an action, use one of the following methods:

    Click the arrow in the Add New Action drop-down list, and scroll down to find the action. Program flow elements are listed first, and then the macro actions are listed alphabetically.

    Browse for the action in the Action Catalog pane. The actions are grouped by category. Expand each category to view the actions. If you select an action, a short description of the action appears at the bottom of the Action Catalog.

    Search for the action in the Action Catalog pane by typing in the Search box at the top of the pane. As you type, the list of actions is filtered to show all macros that contain that text. Access searches both the macro names and their descriptions for the text you enter.

Step 2: Add an action to a macro

Once you have found the macro action you want, add it to the macro by using one of these methods:

    Select an action in the Add New Action list, or just begin typing the action name in the box. Access adds the action at the point where the Add New Action list was displayed.

    Drag the action from the Action Catalog to the macro pane. An insertion bar appears to show you where the action will be inserted when you release the mouse button.

    Double-click the action in the Action Catalog.

    • If an action is selected in the macro pane, Access adds the new action just below the selected one.

      If a Group , If , Else If , Else , or Submacro block is selected in the macro pane, Access adds the new action to that block.

      If no action or block is selected in the macro pane, Access adds the new action to the end of the macro.

      • If you have already created one or more macros, they are listed under the In this Database node in the Action Catalog.

        • Dragging a standalone macro (one that is listed under Macros ) into the macro pane creates a RunMacro action that runs the macro you dragged in. You can then use the drop-down list to call submacros, if present.

          If you just want to copy the actions from a standalone macro into the current macro (instead of creating a RunMacro action), right-click it in the Action Catalog, and then click Add Copy of Macro .

          Dragging an embedded macro (one that is listed under a form or report object) into the macro pane copies the actions from that macro into the current macro.

      • You can also create an action by dragging a database object from the Navigation Pane to the macro pane. If you drag a table, query, form, report, or module to the macro pane, Access adds an action that opens the table, query, form, or report. If you drag another macro into the macro pane, Access adds an action that runs the macro.

Step 3: Fill in arguments

Most macro actions require at least one argument. You can view a description of each argument by selecting the action and then moving the pointer over the arguments. For many arguments, you can select a value from a drop-down list. If the argument requires you to type in an expression, IntelliSense helps you enter the expression by suggesting possible values as you type, as shown in the following illustration:

When you see a value that you want to use, add it to your expression by double-clicking it or using the arrow keys to highlight it and then pressing the TAB or ENTER key.

For more information about creating expressions, see the article Introduction to expressions .

About using IntelliSense with properties in web databases

When you are creating an embedded UI macro on a web-compatible form, IntelliSense allows you to add any form property to an expression. However, in a web database, only a subset of form properties can be accessed by using UI macros. For example, given a control named Control1 on a form named Form1, IntelliSense will let you add !!. to an expression in a UI macro. However, if you then publish the database to Access Services, the macro containing that expression will generate an error when it is run on the server.

The following table shows the properties that you can use in UI macros in web databases:

Properties that you can use

Caption, Dirty, AllowAdditions, AllowDeletions, AllowEdits

Caption, Visible, Fore Color, Back Color

Visible, Enabled

Caption, Visible, Enabled, Fore Color

Enabled, Visible, Locked, Fore Color, Back Color, value

Visible, Back Color

Enabled, Visible, Locked, Value

Enabled, Visible, Locked, Value

Enabled, Visible Locked

Navigation Control

Enabled, Visible

Move an action

Actions are executed in order, from the top to the bottom of the macro. To move an action up or down in the macro, use one of the following methods:

    Drag the action up or down to where you want it.

    Select the action, and then press CTRL + UP ARROW or CTRL + DOWN ARROW.

    Select the action, and then click the Move Up or Move Down arrow on the right side of the macro pane.

Delete an action

To delete a macro action:

    Select the action, and then press the DELETE key. Alternatively, you can click the Delete (X) button on the right side of the macro pane.

    • If you delete a block of actions, such as an If block or a Group block, all the actions in the block are deleted as well.

      The Move up , Move down , and Delete commands are also available on the shortcut menu that appears when you right-click a macro action.

Control program flow with If, Else If, and Else

To execute macro actions only when certain conditions are true, you use an If block. This replaces the Condition column that was used in earlier versions of Access. You can extend an If block with Else If and Else blocks, similar to other sequential programming languages like VBA.

The following illustration shows a simple If block, including Else If and Else blocks:

The If block executes if the ExpirationDate field is less than the current date.

The Else If block executes if the ExpirationDate field is equal to the current date.

The Else block executes if none of the previous blocks do.

The If block ends here.

Add an If block to a macro

    Select If from the Add New Action drop-down list, or drag it from the Action Catalog pane to the macro pane.

    In the box at the top of the If block, type an expression that determines when the block will be executed. The expression must be Boolean (that is, one that evaluates to either Yes or No).

    Add actions to the If Add New Action drop-down list that appears within the block, or by dragging them from the Action Catalog pane to the If block.

Add Else or Else If blocks to an If block

    Select the If block , and then on the lower right corner of the block, click Add Else or Add Else If .

    If you are adding an Else If block, type an expression that determines when the block will be executed. The expression must be Boolean (that is, one that evaluates to either True or False).

    Add actions to the Else If or Else block by selecting them from the Add New Action drop-down list that appears within the block, or by dragging them from the Action Catalog pane to the block.

    • The commands to add If , Else If , and Else blocks are available on the shortcut menu that appears when you right-click a macro action.

      If blocks can be nested up to 10 levels deep.

Create submacros

Each macro can contain multiple submacros. A submacro is designed be called by name from the RunMacro or OnError macro actions.

You add a Submacro block to a macro in the same way that you a macro action, as described in the section . Once you have added a Submacro block, you can drag macro actions into it, or select actions from the Add New Action

    You can also create a Submacro block by selecting one or more actions, right-clicking them, and then selecting Make Submacro Block .

    Submacros must always be the last blocks in a macro; you cannot add any actions (except more submacros) below a submacro. If you run a macro that only contains submacros without specifically naming the submacro you want, only the first submacro will run.

    To call a submacro (for example, in an event property, or by using the RunMacro action or OnError action), use the following syntax:

    Group related actions together

    You can improve the readability of a macro by grouping actions together and assigning a meaningful name to the group. For example, you could group actions that open and filter a form into a group named “Open and filter form.” This makes it easier to see which actions are related to each other. A Group block does not affect how the actions are executed, and the group cannot be called or run individually. Its primary use is for labeling a group of actions to help you understand the macro as you read it. In addition, while editing a large macro, you can collapse each group block down to a single line, reducing the amount of scrolling you have to do.

    If the actions you want to group are already in the macro, use this procedure to add them to a Group block:

    1. Select the actions that you want to group.

      Right-click the selected actions, and then click Make Group Block .

      In the box at the top of the Group

    If the actions are not already present:

      Drag the Group block from the Action Catalog to the macro pane.

      In the box at the top of the Group block, type a name for the group.

      Drag macro actions from the Action Catalog into the Group block, or select actions from the Add New Action list that appears within the block.

    Group blocks can contain other Group blocks, and can be nested up to a maximum of 9 levels deep.

    Expand and collapse macro actions or blocks

    When you create a new macro, the macro builder displays macro actions with all arguments visible. Depending on the size of the macro, you might want to collapse some or all of the macro actions (and blocks of actions) while you are editing the macro. This makes it easier to get an overall view of the structure of your macro. You can expand some or all of the actions as needed to edit them.

    Expand or collapse a single macro action or block

      Click the plus (+ ) or minus (- ) sign to the left of the macro or block name. Alternatively, press the UP ARROW and DOWN ARROW keys to select an action or block, and then press the LEFT ARROW or RIGHT ARROW keys to collapse or expand it.

    Expand or collapse all macro actions (but not blocks)

      On the Design tab, in the Collapse/Expand group, click Expand Actions or Collapse Actions .

    Expand or collapse all macro actions and blocks

      On the Design tab, in the Collapse/Expand group, click Expand All or Collapse All .

    Tip: You can “peek” inside a collapsed action by moving the pointer over the action. Access displays the action arguments in a tooltip.

    Copy and paste macro actions

    If you need to repeat actions that you have already added to a macro, you can copy and paste the existing actions much as you would do with paragraphs of text in a word processor. When you paste actions, they are inserted just below the currently selected action. If a block is selected, the actions are pasted inside the block.

    Share a macro with others

    When you copy macro actions to the clipboard, they can be pasted as Extensible Markup Language (XML) into any application that accepts text. This enables you to send a macro to a colleague via an e-mail message, or post the macro on a discussion forum, blog, or other Web site. The recipient can then copy the XML and paste it into their Access 2010 Macro Builder. The macro is recreated just as you wrote it.

    Run a macro

    You can run a macro by using any of the following methods:

      Double-click the macro in the Navigation Pane.

      Call the macro by using the RunMacro or OnError macro action.

      Enter the macro name in an Event property of an object. The macro will run when that event is triggered.

    Debug a macro

    If you are having problems getting a macro to run, there are a couple of tools you can use to get to the source of the problem.

    Add error-handling actions to a macro

    We recommend adding error handling actions to each macro as you write it, and leaving them in the macro permanently. When you use this method, Access displays descriptions of errors as they occur. The error descriptions help you understand the error so that you can correct the problem more quickly.

    Use the following procedure to add an error-handling submacro to a macro:

      Submacro from the Add New Action drop-down list.

      In the box just to the right of the word Submacro , type a name for the submacro, such as ErrorHandler .

      From the Add New Action drop-down list that appears within the Submacro block, select the MessageBox macro action.

      In the Message box, type the following text: =.

      At the bottom of the macro, select OnError from the Add New Action drop-down list.

      Set the Go to argument to Macro Name .

      In the Macro Name box, type the name of your error-handling submacro (in this example, ErrorHandler ).

      Drag the OnError macro action to the very top of the macro.

    The following illustration shows a macro with the OnError action and a Submacro that is named ErrorHandler .

    The OnError macro action is placed at the top of the macro, and calls the ErrorHandler submacro in the event of an error.

    The ErrorHandler submacro only runs if it is called by the OnError action, and displays a message box that describes the error.

    Use the Single Step command

    Single Step is a macro debugging mode that you can use to execute a macro one action at a time. After each action is performed, a dialog box appears that displays information about the action, and any error codes that occurred as a result. However, because there is no description of the error in the Macro Single Step dialog box, we recommend using the error-handling submacro method described in the previous section.

    To start Single Step mode:

      Open the macro in Design view.

      On the Design tab, in the Tools group, click Single Step .

      Save and close the macro.

    Next time you run the macro, the Macro Single Step dialog box appears. The dialog box displays the following information about each action:

      Condition (for If blocks)

    • Error Number (an error number of 0 means no error occurred)

    As you step through the actions, click one of the three buttons in the dialog box:

      To see information about the next action in the macro, press Step .

      To stop any macros that are currently running, click Stop All Macros . Single Step mode will still be in effect the next time you run a macro.

      To exit Single Step mode and continue running the macro, click Continue .

      • If you press Step after the last action in a macro, Single Step mode will still be in effect the next time you run a macro.

        To enter Single Step mode while a macro is running, press CTRL+BREAK.

        To enter Single Step mode at a specific point in a macro, add the SingleStep macro action at that point.

        Single Step mode is not available in a Web database.

    Convert a macro to VBA code

    Macros provide a subset of the commands that are available in the Visual Basic for Applications (VBA) programming language. If you decide you need more functionality than macros can provide, you can easily convert a standalone macro object to VBA code, and then make use of the expanded feature set that VBA provides. Keep in mind, however, that VBA code will not run in a browser; any VBA code that you add to a Web database will only run when the database is open in Access.

    Note: You cannot convert embedded macros to VBA code.

    To convert a macro to VBA code:

      In the Navigation Pane, right-click the macro object and then click Design view.

      On the Design tab, in the Tools group, click Convert Macros to Visual Basic .

      In the Convert macro dialog box, specify whether you want error handling code and comments added to the VBA module, and then click Convert .

    Access confirms that the macro was converted, and opens the Visual Basic Editor. Double-click the Converted Macro in the Project pane to view and edit the module.