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

Большинство макрокоманд, из которых составляются макросы, имеют аргументы. Например, макрокоманда Открыть таблицу имеет аргумент Имя таблицы (т.е. имя таблицы, которую требуется открыть), а также некоторые другие аргументы, задающие режим открытия таблицы. Некоторые макрокоманды не имеют аргументов (например, макрокоманда Свернуть просто свертывает текущее окно). Имеется также специальная макрокоманда Выполнить команду; ее аргументом является название одного из элементов меню (на английском языке). Поэтому команда Выполнить команду означает выполнение указанного элемента меню.

Окно описания макроса (вызываемое кнопкой Создать на вкладке Макросы) содержит две основные колонки: Макрокоманда (в этой колонке вводятся макрокоманды, т.е. фактически описывается макрос) и Примечание (комментарий). Если макрос должен выполняться при определенном условии, то используется также дополнительная колонка Условие; эта возможность будет рассмотрена в разделе 4.

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

Пример создания макроса

Одно из самых простых и распространенных применений макросов – одновременное открытие нескольких элементов базы данных (таблиц, форм и т.д.) в желаемом виде.

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

Макрос, реализующий эти действия, создается следующим образом.

1. Перейти на вкладку Макросы. Нажать кнопку Создать.

2. В первой строке колонки Макрокоманды ввести макрокоманду Открыть таблицу. Указать аргументы этой макрокоманды: Имя таблицы – Объекты , Режим – Таблица, Режим данных – Только чтение (чтобы исключить внесение изменений в таблицу).

3. В следующей строке ввести макрокоманду Открыть запрос. Указать ее аргументы: Имя запроса - Стоимость контрактов по заказчикам , Режим – Таблица, Режим данных – Только чтение.

4. В следующей строке ввести макрокоманду Выполнить команду. В качестве ее аргумента выбрать команду РядомГоризонтально (в некоторых версиях - TileHorizontally). Это требуется для того, чтобы окна, открытые предыдущими макрокомандами, оставались на экране (друг над другом).

5. Закрыть окно макроса. На запрос о сохранении внесенных изменений ответить Да. Указать имя макроса: .

6. Чтобы выполнить макрос, необходимо выделить его отметку и нажать кнопку Запуск (или просто дважды щелкнуть по отметке макроса). Запрос и таблица выводятся на экран.

Полученное представление данных имеет недостаток: на экране (в нижней части) остается главное окно базы данных. Желательно сворачивать его, прежде чем выводить на экран два других окна (таблицу и запрос). Для этого внесем изменения в макрос.

1. Перейти на вкладку Макросы. Выделить макрос Просмотр информации об объектах . Нажать кнопку Конструктор.

2. Поместить курсор в первую строку (т.е. в ту строку, перед которой требуется вставить новую макрокоманду). Выбрать команду Вставка – Строки.

3. В появившейся пустой строке (первой) ввести макрокоманду Свернуть. Аргументов у этой макрокоманды нет.

5. Выполнить макрос.

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

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

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

Предположим, требуется запустить отчет непосредственно из формы ввода данных. Можно добавить в форму кнопку и затем создать макрос, который будет запускать отчет. Макрос может быть изолированным (отдельный объект в базе данных), который затем связывается с событием OnClick для кнопки, или же он может быть внедрен непосредственно в событие кнопки OnClick - это новая возможность в Office Access 2007. В любом случае, при нажатии кнопки выполняется макрос, который запускает отчет.

Макрос создается с помощью построителя макросов, показанного на следующем рисунке.

Чтобы отобразить построитель макросов

Общие сведения о макросах

Термин «макрос» часто используется по отношению к изолированным макрообъектам (то есть объектам, отображаемым в области переходов в разделе Макросы ), но на самом деле, один макрообъект может содержать несколько макросов. В этом случае он называется группой макросов . Группа макросов отображается в панели переходов как один объект, хотя в действительности содержит несколько макросов. Разумеется, каждый макрос может быть создан как отдельный макрообъект, но зачастую имеет смысл сгруппировать несколько связанных макросов в один макрообъект. Имя в столбце Имя макроса идентифицирует каждый макрос.

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

Имена макросов

Если макрообъект содержит только один макрос, имя макроса излишне. Для макроса может использоваться имя макрообъекта. Однако в случае группы макросов необходимо присвоить каждому макросу уникальное имя. Если столбец Имя макроса не отображается в построителе макросов, нажмите кнопку Имена макросов в группе Отображение на вкладке Конструктор . Дополнительные сведения о выполнении макросов в группе см. далее в этой статье.

Аргументы

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

В построителе макросов в Office Access 2007 имеется столбец Аргументы , позволяющий просматривать (но не изменять) аргументы макрокоманды в строке макрокоманды. Так легче читать макрос, так как уже не нужно выбирать каждую макрокоманду, чтобы увидеть ее аргументы. Чтобы отобразить столбец Аргументы , нажмите кнопку Аргументы в группе Отображение на вкладке Конструктор .

Условия

Условие определяет требования, которые должны быть соблюдены, для того чтобы была выполнена макрокоманда. Можно использовать любое, результатом которого являются значения «Истина» или «Ложь» либо «Да» или «Нет». Если выражение вычисляется как «Ложь», «Нет» или 0 (нуль), макрокоманда не будет выполнена. При любом другом значении выражения макрокоманда будет выполнена.

Одно условие может управлять несколькими макрокомандами, если в столбце Условие ввести многоточие (...) для каждой следующей по порядку макрокоманды, к которой будет применяться данное условие. Если выражение вычисляется как «Ложь», «Нет» или 0 (нуль), ни одна из макрокоманд не будет выполнена. При любом другом значении выражения будут выполнены все макрокоманды.

Для отображения в построителе макросов столбца Условия на вкладке Конструктор в группе Отображение нажмите кнопку Условия

Выражение, используемое как условие Условие, при котором выполняется макрокоманда
[Город]="Париж" Поле «Город» в форме, из которой запускается макрос, имеет значение «Париж».
DCount("[КодЗаказа]", "Заказы")>35 Количество записей в поле «КодЗаказа» таблицы «Заказы» превышает 35.
DCount("*", "Заказано", "[КодЗаказа]=Forms![КодЗаказа]![КодЗаказа]")>3 В таблице «Заказано» содержится более 3 записей, у которых поле «КодЗаказа» в таблице соответствует полю «КодЗаказа» в форме «КодЗаказа».
[ДатаИсполнения] Between #2-фев-2006# And #2-мар-2006# Значение поля «ДатаИсполнения» в форме, из которой запускается макрос, попадает в интервал со 2 февраля 2006 по 2 марта 2006 г.
Forms![Товары]![На складе]<5 Значение поля «На складе» в форме «Товары» меньше 5.
IsNull([Имя]) Поле «Имя» в форме, из которой запускается макрос, имеет значение (не заполнено). Это выражение эквивалентно следующему: [Имя] Is Null.
[Страна]="UK" And Forms![СуммыПродаж]![ВсегоЗаказов]>100 Поле «Страна» в форме, из которой запускается макрос, имеет значение «Великобритания», и значение поля «ВсегоЗаказов» в форме «СуммыПродаж» больше 100.
[Страна] In ("Франция", "Италия", "Испания") And Len([Индекс])<>5 Поле «Страна» в форме, из которой запускается макрос, имеет значение «Франция», «Италия» или «Испания», и почтовый индекс содержит не 5 символов.
MsgBox("Подтвердить изменения?",1)=1 Нажата кнопка ОК в диалоговом окне, в котором функция MsgBox отображает текст «Подтвердить изменения?». Если в диалоговом окне нажата кнопка Отмена эта макрокоманда будет пропущена.
!=2 Временная переменная, которая используется для хранения результата окна сообщения, равна 2 (vbCancel=2).

Совет. Чтобы приложение Access временно пропускало макрокоманду, введите в качестве условия значение «Ложь». Временный пропуск макрокоманды может применяться при поиске ошибок в макросе.

Макрокоманды

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

Новые возможности макросов в Office Access 2007

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

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

В Office Access 2007 макрос или группа макросов могут быть заключены в объект макроса (называемый иногда изолированным макросом), или макрос может быть внедрен в любое свойство события в форме, отчете или элементе управления. Внедренные макросы становятся частью объекта или элемента управления, в которые они внедрены. Изолированные макросы отображаются в области переходов в разделе Макросы , в отличие от внедренных.

Функции построителя макросов

Построитель макросов служит для создания и изменения макросов. Он открывается следующим образом.

Приложение Access откроет построитель макросов.

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

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

В следующей таблице показаны команды, доступные на вкладке Конструктор в построителе макросов.

Группа Команда Описание
Сервис Выполнить Выполнение макрокоманд, перечисленных в макросе.
Пошагово Включение режима пошагового выполнения макроса. При запуске макроса в этом режиме происходит поочередное выполнение каждой макрокоманды. После завершения каждой макрокоманды отображается диалоговое окно Пошаговое исполнение макроса . Для перехода к следующей макрокоманде нажмите в этом диалоговом окне кнопку Шаг . Нажмите кнопку Остановить все макросы , чтобы остановить исполнение этого и всех остальных макросов. Нажмите кнопку Далее , чтобы выйти из пошагового режима и выполнить остальные макрокоманды без остановки.
Построитель Эта кнопка активируется при вводе аргумента макрокоманды, содержащего выражение. Щелкните кнопку Построитель , чтобы открыть диалоговое окно Построитель выражений , в котором можно создать выражение.
Строки Вставить строки Добавление одной или нескольких пустых строк макрокоманд над выбранными строками.
Удалить строки Удаление выбранных строк макрокоманд.
Отображение Отобразить все макрокоманды

Отображение большего или меньшего количества макрокоманд в раскрывающемся списке Макрокоманда .

  • Для отображения более длинного списка макрокоманд нажмите кнопку Отобразить все макрокоманды . Если выбран полный список макрокоманд, кнопка Отобразить все макрокоманды выделена. При выборе макрокоманды в полном списке перед ее выполнением может потребоваться предоставить базе данных надежное состояние явным образом.
  • Для отображения краткого списка, включающего только макрокоманды, которые могут использоваться в базе данных, не имеющей состояния надежной, кнопка Отобразить все макрокоманды не должна быть выделена.

Совет. Если кнопка Отобразить все макрокоманды выделена, снимите выделение, нажав эту кнопку.

Если кнопка Отобразить все макрокоманды не выделена, доступен краткий список макрокоманд для надежной базы данных.

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

Создание изолированного макроса

  1. Добавьте в макрос макрокоманду.
  • В построителе макросов щелкните первую пустую ячейку в столбце Макрокоманда .
  • Введите нужную макрокоманду или щелкните стрелку, чтобы раскрыть и выбрать из него нужную макрокоманду.
  • В разделе Аргументы макрокоманды при необходимости укажите аргументы для макрокоманды. Щелкните поле аргумента, чтобы увидеть его краткое описание справа от аргумента.
  • Для, значения которых служат именами, можно задать значение, перетащив объект из области переходов в поле аргумента Имя объекта .
  • Можно также создать макрокоманду, перетащив объект базы данных из области переходов в пустую строку в построителе макросов. При перетаскивании таблицы, запроса, формы, отчета или модуля в построитель макросов добавляется макрокоманда, открывающую таблицу, запрос, форму или отчет. При перетаскивании макроса в построитель макросов добавляется макрокоманда, запускающая макрос.
  1. Чтобы добавить в макрос следующую макрокоманду, перейдите в другую и повторите шаг 2. Приложение Access выполняет макрокоманды в том порядке, в котором они перечислены.

Создание группы макросов

Для группировки нескольких связанных макросов в один объект макроса можно создать группу макросов.

Будет открыт построитель макросов.

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

  1. В столбце Имя макроса введите имя первого макроса из группы.
  2. Добавьте макрокоманды для исполнения в первом макросе.
  • В столбце Макрокоманда щелкните стрелку, чтобы раскрыть список макрокоманд.
  • Выберите макрокоманду, которую требуется добавить.
  • В разделе Аргументы макрокоманды укажите аргументы макрокоманды, если они нужны. Щелкните поле аргумента, чтобы увидеть его краткое описание справа от аргумента.
  • Для аргументов макрокоманд, параметры которых служат именами объектов базы данных, можно задать аргумент, перетащив объект из области переходов в поле аргумента Имя объекта .
  • Можно также создать макрокоманду, перетащив объект базы данных из области переходов в пустую строку в построителе макросов. При перетаскивании таблицы, запроса, формы, отчета или модуля в построитель макросов добавляется макрокоманда, открывающая таблицу, запрос, форму или отчет. При перетаскивании макроса в построитель макросов добавляется макрокоманда, запускающая макрос.
  • При необходимости введите примечания к макрокоманде.
  1. Перейдите к следующей пустой строке в столбце Имя макроса и введите имя очередного макроса из группы.
  2. Добавьте макрокоманды для выполнения в этом макросе.
  3. Повторите действия 5 и 6 для каждого макроса в группе.

Примечания

ИмяГруппыМакросов.ИмяМакроса

Например, название «Кнопки.Товары» относится к макросу «Товары» в группе макросов «Кнопки». В списке макросов, например, в списке аргументов «Имя макроса» для макрокоманды ВыполнитьМакрос , макрос «Товары» будет отображаться как «Кнопки.Товары».

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

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

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

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

Макрос будет выполняться каждый раз при возникновении события.

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

Пример. Внедрение макроса в событие отчета «Отсутствие данных»

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

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

Построитель макросов будет закрыт, а для события Отсутствие данных будет выведено сообщение [Внедренный макрос] .

  1. Сохраните и закройте отчет.

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

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.

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

Как правило, макросы связаны с “реакцией на событие” управляющих элементов Access 2007. События определяют, что происходит при нажатии кнопки, входе или выходе из поля БД, открытии или закрытии формы или отчета.

Создание кнопок для запуска форм

Создадим форму “Панель кнопок” для вызова некоторых форм Покупатель , Товар и Заказ нашей базы данных. Для этого выберем вкладку Создание на панели инструментов СУБД, а затем нажмем кнопку Макрос . На экране появится окно Макрос1. В нем имеется таблица с двумя полями. Первое из них предназначено для макрокоманд, второе – для аргументов.

Нажмем на панели БД закладку Форма, выберем форму “Покупатель” и перетащим ее в первую строку таблицу определения макроса в столбец Макрокоманда, при этом появится текст ОткрытьФорму , в правой части окна появится название формы. Закроем макрос, сохраним его с именем “Покупатель”.

Замечание. Можно непосредственно из списка макрокоманд выбрать макрокоманду ОткрытьФорму, а затем в параметрах (в нижней части экрана) указать форму «Покупатель».

Теперь создадим форму для размещения кнопок. Выберем вкладку Создание в окне базы данных, затем команду Пустая форма . Перейдя в режим конструктора, перетащим созданный нами макрос “Покупатель” на форму. Там появится кнопка с надписью Покупатель . При просмотре списка можно обнаружить, что в свойстве Нажатие кнопки записано имя макроса «Покупатель».

Закроем форму и сохраним ее с именем “Панель кнопок”. Для проверки работы откроем форму и нажмем кнопку Покупатель . На экране появится созданная нами ранее форма “Покупатель”, с помощью которой можно просматривать и вводить данные по покупателям.

Задание

  1. Создать в форме “Панель кнопок” кнопки Товар и Заказ для форм “Товар” и “Заказ с полем со списком”.
  2. Добавить в форму “Панель кнопок” заголовок Основные формы ввода данных.
  3. Задайте разный тип оформления для элементов формы.

Макросы. Автоматический запуск макроса при открытии БД

При открытии БД Access удобно вывести на экран определенную форму, например, панель кнопок управления приложением. Сделаем так, чтобы при открытии нашей базы данных выводилась форма “Панель кнопок ”.

Для этого выберем вкладку Создание, нажмем кнопку Макрос , при этом появится пустое окно макроса в режиме конструктора. Нажмем на поле в столбце Макрокоманда , из списка выберем макрокоманду ОткрытьФорму . В поле Имя формы укажем форму “Панель кнопок”. Закроем макрос и сохраним его с именем “AutoExec”.

Теперь закроем нашу БД и откроем ее. При этом автоматически откроется форма “Панель кнопок”. Чтобы открыть БД без автоматического открытия этой формы, надо при открытии базы данных удерживать нажатой кнопку Shift.

Теперь отменим автоматический запуск “Панели кнопок”. Для этого переименуем макрос “AutoExec” в “AutoExec1.

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

Практическая работа №8

Тема занятия: Работа с макросами.

Цель занятия : Научиться создавать, изменять и использовать макросы при работе с базой данных Access.

План занятия :

1. Создание простейшего макроса.

2. Создание макросов выполняющих несколько макрокоманд.

3. Использование макросов при работе с формами.

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

1. Создание простейшего макроса.

Создание макроса открывающего таблицу

Создадим макрос позволяющий открыть таблицу «клиенты».

Запустите базу данных торгового предприятия.

Прейдите на вкладку Макросы.

Нажмите на кнопку Создать.

В поле Макрокоманда выберите команду Открыть таблицу.

В поле имя таблицы выберите таблицу «клиенты».

Закройте макрос и сохраните его под именем «Макрос – клиенты».

Создание макроса с применением фильтров

Создадим макрос, который позволит открыть форму «Клиенты» и отобразить в ней только сведения о тех клиентах фамилии которых начинаются на буквы от А до Е.

Прейдите на вкладку Макросы.

Нажмите на кнопку Создать. На рисунке изображен конструктор макросов.

В поле Макрокоманда выберите команду Открыть форму.

В поле Имя формы Выберите форму «Клиенты»

В поле условие отбора введите [Фамилия] like “[А-Е]*”

В поле Режим данных Выберите Только чтение.

Сохраните макрос под именем «Макрос – форма клиенты». Проверьте работу макроса.

Задание: Создайте макрос позволяющий выводить на печать один из созданный вами ранее отчетов.

2. Создание макросов выполняющих несколько макрокоманд.

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

Создайте новый макрос.

В поле макрокоманда выберите Открыть таблицу. В поле Имя Таблице выберите «Заказы»

Для добавления в макрос других макрокоманд перейдите на следующую строку и повторите шаги с 3 по 6. Следующая команда называется Сообщение. В поле Сообщение Введите «Вы открыли таблицу заказы»

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

Сохраните макрос и проверьте его работу.

Макет макроса выполняющего несколько макрокоманд.

3. Использование макросов при работе с формами.

Создадим на форме «Сотрудники» кнопку, которая позволит закрыть все объекты базы данных форму и сохранить в ней изменения.

Создайте макрос с макрокомандой Закрыть. В качестве типа объекта укажите Форма, Имя объекта – Сотрудники. Сохраните его под именем «Кнопка»

Откройте форму «Сотрудники» в режиме конструктора.

На панели элементов найдите элемент Кнопка (убедитесь в том, что параметр мастера включен)

Разместите кнопку на форме.

В окне Создание кнопок Выберите категорию Разное, Действия Выполнить макрос. Нажмите Далее.

Выберите из списков макрос Выход . Нажмите Далее.

В следующем окне введите текст кнопки «Выход». Нажмите Готово.

Сохраните изменения в форме и проверьте работу кнопки.

Задание: Создайте кнопку, которая позволит быстро закрыть базу данных.

Контрольные вопросы:

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

2. Типы макросов?

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

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