Запуск макроса с помощью команды меню

Еще одним распространенным способом запуска макроса является запуск с помощью специально созданной для этого команды меню. Способы создания команд меню для запуска макросов очень похожи на те, что применяются для создания кнопок на панели инструментов. Например, можно воспользоваться для этого командой меню Сервис, Макрос, Создать меню из макроса (Tools, Macro, Create Menu from Macro).
Более подробно создание и настройка пользовательских меню рассматриваются. Поэтому в данном разделе мы не будем рассматривать создание команды меню из макроса.
 
Запуск макроса с помощью комбинации клавиш
Для запуска макроса можно назначить комбинацию клавиш. Для этого необходимо создать специальную группу макросов — "AutoKeys". Эта группа макросов должна для каждой назначенной вами комбинации клавиш содержать макрокоманду запуска соответствующего макроса. Пример группы макросов "AutoK"eys приведен в базе данных "Борей". Откройте эту группу макросов в режиме Конструктора. Она содержит один макрос. Имя макроса— это запись комбинации клавиш <Ctrl>+<P>. Сам макрос состоит из одной макрокоманды ЗапускМакроса (RunMacro), которая запускает макрос "Телефоны клиентов. Печать" (Customer Phone List.Print). Макрос "AutoKeys" просматривается каждый раз, когда пользователь вводит специальные комбинации клавиш, например <Ctrl>+<P>. Если введенная комбинация клавиш найдена в "AutoKeys", то запускается соответствующий макрос.
Этот способ запуска макроса, безусловно, является самым быстрым, однако он имеет существенный недостаток: свободных комбинаций клавиш очень немного. И хотя комбинации, определенные в "AutoKeys", имеют более высокий приоритет, чем стандартные (например, <Ctrl>+<C> — копировать), заменять стандартное назначение комбинаций клавиш не рекомендуется. Разрешенные комбинации клавиш приведены в. Комбинации с клавишей <Alt> в данном случае не применяются, т. к. используются для запуска команд меню и нажатия кнопок.
Разрешенные комбинации клавиш

Обозначение

Комбинации клавиш

^А или ^4

<Ctrl> + буква или <Ctrl> + цифра

{F1}

Любая функциональная клавиша

^{F1}

<Ctrl> + любая функциональная клавиша

+ {F1}

<Shift> + любая функциональная клавиша

{Insert}

<Ins>

A {Insert}

<Ctrl> + <Ins>

+{Insert}

<Shift> + <Ins>

{Delete} или {Del}

<Del>

^{ Delete} или ^{Dе1}

<Ctrl> + <Del>

+{ Delete} или +{Del}

<Shift> + <Del>

 
Запуск макроса при открытии базы данных
При открытии базы данных Microsoft Access могут выполняться некоторые действия. Чаще всего это открытие специальной формы, так называемой Главной кнопочной формы, вывод специальных меню или панелей инструментов, скрытие стандартных меню и т. д. Для определения этих действий используется диалоговое окно Параметры запуска (Startup). Однако иногда требуется при запуске приложения выполнить более сложный набор действий, чем тот, что позволяет задать это диалоговое окно. Например, может потребоваться заранее открыть несколько форм (не показывая их на экране), чтобы потом их отображение не занимало много времени, проверить некоторые условия или запросить ввод некоторых данных. Все это можно сделать с помощью специального макроса, который называется "AutoExec". При открытии базы данных Access проверяет наличие этого макроса и, если он существует, выполняет его. При создании макроса "AutoExec" следует помнить, что Access сначала выполнит действия, определенные в окне Параметры запуска (Startup), а затем — макрос "AutoExec", поэтому в них не должно быть противоречивых действий.
Запуск макроса из другого макроса
Иногда требуется вызвать макрос из другого макроса. Это можно сделать с помощью макрокоманды ЗапускМакроса (RunMacro). Мы уже встречались с этой макрокомандой при описании макроса "AutoKeys". Здесь нужно отметить, что эта макрокоманда имеет три аргумента: кроме имени макроса, задается число повторов выполнения макрокоманды и условие повтора. Таким образом, эта макрокоманда позволяет организовывать циклы. Аргумент Число повторов (Repeat Count) задает количество вызовов макроса. Аргумент Условие повтора (Repeat Expression) является выражением, которое может принимать значение Истина или Ложь. Перед выполнением макрокоманды ЗапускМакроса (RunMacro) проверяется значение этого выражения. Если оно Истина, то макрос выполняется, если Ложь, то макрос не выполняется и управление передается следующей макрокоманде. Если эти два аргумента не заданы, макрос выполняется только один раз. Если заданы оба эти аргумента, цикл вызова прекращается, когда макрос выполнился заданное число раз либо когда заданное условие окажется невыполненным и получит значение Ложь.
Замечание

Имя макроса в аргументе макрокоманды ЗапускМакроса (RunMacro) должно быть полным, т. е. должно иметь вид имяГруппы. имяМакроса, даже если вызываемый макрос находится в той же группе, что и вызывающий. Если условие повтора задано таким образом, что оно всегда истинно, то цикл окажется бесконечным. Можно прервать его с помощью комбинации клавиш <Ctrl>+<Break>. Если это не поможет, придется прервать работу Access, нажав комбинацию клавиш <Ctrl>+<Alt>+<Del>.