Applies ToAccess для Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

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

Примечание: Эта статья не относится к веб-приложениям Access.

В этой статье

Общие сведения

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

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

К началу страницы

Построитель макросов

Ниже приведены некоторые основные функции построителя макросов.

  • Каталог действий    Макрокоманды упорядочены по типу и доступны для поиска.

  • IntelliSense.    При вводе выражений IntelliSense предлагает возможные значения и позволяет выбрать правильное.

  • Сочетания клавиш    Используйте сочетания клавиш для более быстрой и простой записи макросов.

  • Поток программы    Создание более удобочитаемых макросов со строками комментариев и группами действий.

  • Условные операторы    Позволяет выполнять более сложную логику с поддержкой вложенных if/Else/Else If.

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

  • Более простой общий доступ    Скопируйте макрос, а затем вставьте его в виде XML на веб-сайт электронной почты, публикации группы новостей, блога или кода.

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

Ваш браузер не поддерживает видео. Установите Microsoft Silverlight, Adobe Flash Player или Internet Explorer 9.

К началу страницы

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

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

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

  2. На панели быстрого доступа нажмите кнопку Сохранить.

  3. В диалоговом окне Сохранение введите имя макроса, а затем нажмите кнопку "ОК".

  4. Перейдите к разделу Добавление макрокоманд в макрос.

К началу страницы

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

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

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

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

  2. Если окно свойств не отображается, нажмите клавишу F4.

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

  4. В области задач "Страница свойств" откройте вкладку Событие.

  5. Щелкните поле свойства для события, которое должно активировать макрос. Например, если вы хотите, чтобы макрос выполнялся при нажатии кнопки, щелкните поле свойства Нажатие для кнопки.  

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

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

  8. Нажмите кнопку Сборка Изображение кнопки.

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

К началу страницы

Добавление макрокоманд в макрос

Макрокомандами называются отдельные команды, которые образуют макрос. Имя макрокоманды отражает ее назначение, например НайтиЗапись или ЗакрытьБазуДанных.

Шаг 1. Просмотр или поиск макрокоманд

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

Примечания: 

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

    • На вкладке Конструктор в группе Показать или скрыть выберите пункт Показать все действия.

  • Если каталог макрокоманд не отображается, на вкладке Конструктор в разделе Показать или скрыть нажмите кнопку Каталог макрокоманд.

Найти макрокоманду можно одним из следующих способов:

  • Щелкните стрелку раскрывающегося списка Добавить новую макрокоманду и прокрутите список вниз, чтобы найти макрокоманду. Сначала выводятся элементы управления выполнением программы, а затем — макрокоманды в алфавитном порядке.

  • Найдите макрокоманду в области "Каталог макрокоманд". Макрокоманды сгруппированы по категориям. Разверните категории для просмотра макрокоманд. При выборе макрокоманды в нижней части каталога выводится ее краткое описание.

  • Выполните поиск макрокоманды, введя текст в поле "Поиск" в верхней части области "Каталог макрокоманд". По мере ввода список макрокоманд фильтруется и в нем выводятся все макросы, которые содержат текст. Access ищет введенный текст в именах макросов и их описаниях.

Шаг 2. Добавление макрокоманды в макрос

После того как вы нашли нужную макрокоманду, добавьте ее в макрос с помощью одного из следующих способов:

  • Выберите макрокоманду в списке Добавить новую макрокоманду или просто начните вводить имя макрокоманды в поле. Access добавит макрокоманду туда, где отображался список Добавить новую макрокоманду.

  • Перетащите макрокоманду из каталога макрокоманд в область макроса. Появится полоса вставки, показывающая, куда будет вставлена макрокоманда, когда вы отпустите кнопку мыши.

  • Дважды щелкните макрокоманду в каталоге макрокоманд.

    • Если в области макроса выбрана макрокоманда, Access добавит новую макрокоманду под выбранной.

    • Если в области макроса выделен блок Группа, Если, Иначе если, Иначе или Вложенный макрос, Access добавит новую макрокоманду в него.

    • Если в области макроса не выбраны макрокоманды и блоки, Access добавит новую макрокоманду в конец макроса.

      Примечания: 

      • Если вы уже создали один или несколько макросов, они указаны в узле В этой базе данных каталога макрокоманд.

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

        • Если вы хотите просто скопировать макрокоманды из автономного макроса в текущий (вместо того чтобы создавать макрокоманду ЗапускМакроса), щелкните его правой кнопкой мыши в каталоге макрокоманд и выберите команду Добавить копию макроса.

        • При перетаскивании внедренного макроса (указанного в объекте формы или отчета) в область макроса макрокоманды из него копируются в текущий макрос.

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

Шаг 3. Ввод аргументов

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

Ввод выражения с помощью функции IntelliSense

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

Дополнительные сведения о создании выражений см. в статье Введение в использование выражений.

Сведения об использовании IntelliSense со свойствами веб-базы данных

При создании макроса пользовательского интерфейса, внедренного в веб-совместимую форму, IntelliSense позволяет добавлять любые свойства формы в выражение. Однако в веб-базе данных с помощью макросов пользовательского интерфейса можно получать доступ только к некоторым свойствам формы. Например, если в форме "Форма1" есть элемент управления "Элемент1", IntelliSense позволит добавить [Формы]![Форма1]![Элемент1].[ControlSource] в выражение в макросе пользовательского интерфейса. Но если опубликовать базу данных в службах Access, макрос, содержащий выражение, будет вызывать ошибку при запуске на сервере.

В таблице ниже перечислены свойства, которые вы можете использовать в макросах пользовательского интерфейса в веб-базах данных:

Объект или элемент управления

Доступные свойства

Форма

Caption, Dirty, AllowAdditions, AllowDeletions, AllowEdits

Набор вкладок

Visible

Надпись

Caption, Visible, "Цвет текста", "Цвет фона"

Вложение

Visible, Enabled

Кнопка

Caption, Visible, Enabled, "Цвет текста"

Текстовое поле

Enabled, Visible, Locked, "Цвет текста", "Цвет фона", Value

Флажок

Enabled, Visible, Locked, Value

Изображение

Visible, "Цвет фона"

Поле со списком

Enabled, Visible, Locked, Value

Список

Enabled, Visible, Locked, Value

Веб-браузер

Visible

Подчиненная форма

Enabled, Visible, Locked

Элемент навигации

Enabled, Visible

Перемещение макрокоманды

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

  • Перетащите макрокоманду вверх или вниз в нужное место.

  • Выберите макрокоманду, а затем нажмите клавиши CTRL+СТРЕЛКА ВВЕРХ или CTRL+СТРЕЛКА ВНИЗ.

  • Выберите макрокоманду и щелкните стрелку Вверх или Вниз в правой части области макроса.

Удаление макрокоманды

Чтобы удалить макрокоманду:

  • Выделите макрокоманду и нажмите клавишу DELETE. Кроме того, вы можете нажать кнопку Удалить (X) в правой части области макроса.

    Примечания: 

    • Если удалить блок макрокоманд, например блок Если или Группа, будут также удалены все макрокоманды в блоке.

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

К началу страницы

Управление выполнением программы с помощью операторов "Если", "Иначе если" и "Иначе"

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

На следующем рисунке показан простой блок Если, включающий блоки Иначе если и Иначе:

Макрос с блоком Если/Иначе.

Блок Если выполняется, если дата в поле ExpirationDate меньше текущей даты.

Блок Иначе если выполняется, если дата в поле ExpirationDate равна текущей дате.

Блок Иначе выполняется, если ни один из предыдущих блоков не выполнился.

На этом блок Если заканчивается.

Добавление блока "Если" в макрос

  1. Выберите оператор Если в раскрывающемся списке Добавить новую макрокоманду или перетащите его из области "Каталог макрокоманд" в область макроса.

  2. В поле в верхней части блока Если введите выражение, определяющее, когда будет выполняться блок. Выражение должно быть логическим (то есть его результатом должно быть значение "Да" или "Нет").

  3. Добавьте макрокоманды в блок Если, выбрав их из раскрывающегося списка Добавить новую макрокоманду в блоке или перетащив их из области "Каталог макрокоманд" в блок Если.

Добавление блоков "Иначе" и "Иначе если" в блок "Если"

  1. Выберите блок Если , а затем в правом нижнем углу блока щелкните Добавить Иначе или Добавить Еще Если.

  2. Если вы добавляете блок Иначе если, введите выражение, определяющее, когда будет выполняться блок. Выражение должно быть логическим (то есть его результатом должно быть значение "Истина" или "Ложь").

  3. Добавьте макрокоманды в блок Иначе если или Иначе, выбрав их из раскрывающегося списка Добавить новую макрокоманду в блоке или перетащив их из области "Каталог макрокоманд" в блок.

    Примечания: 

    • Команды для добавления блоков Если, Иначе если и Иначе также доступны в контекстном меню, которое появляется при щелчке макрокоманды правой кнопкой мыши.

    • У блоков Если может быть до 10 уровней вложенности.

К началу страницы

Создание вложенных макросов

У каждого макроса может быть несколько вложенных макросов. Вложенный макрос вызывается по имени из макрокоманд ЗапускМакроса или ПриОшибке.

Блок Submacro добавляется в макрос так же, как макрокоманда, как описано в разделе Добавление действий в макрос. После добавления блока Submacro в него можно перетащить макрокоманды или выбрать действия из списка Добавление нового действия , который отображается в блоке.

Примечания: 

  • Вы также можете создать блок Вложенный макрос, выбрав одну или несколько макрокоманд, щелкнув их правой кнопкой мыши, а затем выбрав команду Сделать блок вложенного макроса.

  • Вложенные макросы всегда должны быть последними блоками в макросе; под ними невозможно добавить никакие макрокоманды (кроме других вложенных макросов). Если запустить макрос, который содержит только вложенные макросы, не указав нужный вложенный макрос, будет выполнен только первый вложенный макрос.

  • Чтобы вызвать подмакро (например, в свойстве события или с помощью действия RunMacro или OnError ), используйте следующий синтаксис: macroname.submacroname

К началу страницы

Группировка связанных макрокоманд

Вы можете сделать макрос более понятным, сгруппировав макрокоманды и присвоив группам продуманные имена. Например, вы можете добавить макрокоманды, открывающие и фильтрующие форму, в группу с именем "Открытие и фильтрация формы". Это позволяет проще понять, какие макрокоманды связаны друг с другом. Блок Группа не влияет на то, как выполняются макрокоманды, и группу невозможно вызвать или запустить по отдельности. Ее основное назначение — присвоение метки группе макрокоманд, которая делает макрос более понятным. Кроме того, при редактировании крупного макроса вы можете свернуть каждый блок группы до одной строки, чтобы меньше использовать прокрутку.

Если макрокоманды, которые вы хотите сгруппировать, уже есть в макросе, выполните следующие действия, чтобы добавить их в блок Группа:

  1. Выберите макрокоманды, которые вы хотите сгруппировать.

  2. Щелкните выбранные макрокоманды правой кнопкой мыши и выберите Сделать блок группы.

  3. В поле в верхней части блока Группа введите имя группы.

Если макрокоманды не добавлены:

  1. Перетащите блок Группа из каталога макрокоманд в область макроса.

  2. В поле в верхней части блока Группа введите имя группы.

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

Блоки Группа могут содержать другие блоки Группы. Допускается до 9 уровней вложенности.

К началу страницы

Развертывание и свертывание макрокоманд или блоков

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

Развертывание или свертывание одной макрокоманды или блока

  • Щелкните знак "плюс" (+) или "минус" (-) слева от имени макроса или блока. Кроме того, можно выбрать макрокоманду или блок с помощью клавиш СТРЕЛКА ВВЕРХ или СТРЕЛКА ВНИЗ, а затем нажать клавишу СТРЕЛКА ВЛЕВО или СТРЕЛКА ВПРАВО, чтобы свернуть или развернуть их.

Развертывание или свертывание всех макрокоманд (но не блоков)

  • На вкладке Конструктор в группе Развернуть или свернуть щелкните Развернуть макрокоманды или Свернуть макрокоманды.

Развертывание или свертывание всех макрокоманд и блоков

  • На вкладке Конструктор в группе Развернуть или свернуть щелкните Развернуть все или Свернуть все.

Совет: Вы можете просмотреть свернутую макрокоманду, наведя на нее указатель. В подсказке будут показаны аргументы макрокоманды.

К началу страницы

Копирование и вставка макрокоманд

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

Совет:  Чтобы быстро продублировать выбранные макрокоманды, удерживайте нажатой клавишу CTRL и перетащите их в то место макроса, куда вы хотите их скопировать.

Предоставление общего доступа к макросу

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

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

Вы можете запустить макрос с помощью следующих способов:

  • Дважды щелкните макрос в области навигации.

  • Вызовите макрос с помощью макрокоманды ЗапускМакроса или ПриОшибке.

  • Введите имя макроса в свойство события объекта. Макрос будет выполняться при активизации события.

К началу страницы

Отладка макроса

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

Добавление в макрос макрокоманд для обработки ошибок

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

Чтобы добавить вложенный макрос для обработки ошибок:

  1. Откройте макрос в Конструкторе.

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

  3. В поле справа от слова Вложенный макрос введите имя вложенного макроса, например ОбработкаОшибок.

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

  5. В поле Сообщение введите следующий текст: =[MacroError].[Description]

  6. В нижней части макроса выберите ПриОшибке из раскрывающегося списка Добавить новую макрокоманду.

  7. Для аргумента Перейти укажите значение Имя макроса.

  8. В поле Имя макроса введите имя вложенного макроса обработки ошибок (в данном примере — ОбработкаОшибок).

  9. Перетащите макрокоманду ПриОшибке в самую верхнюю часть макроса.

На следующем рисунке показан макрос с макрокомандой ПриОшибке и вложенным макросом ОбработкаОшибок.

Макрос с вложенным макросом для обработки ошибок.

Макрокоманда ПриОшибке расположена вверху макроса и вызывает вложенный макрос ОбработкаОшибок в случае ошибки.

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

Использование команды пошагового исполнения

Пошаговое исполнение —это режим отладки макроса, который можно использовать для выполнения макроса по одной макрокоманде за раз. После выполнения каждой макрокоманды выводится диалоговое окно со сведениями о ней и кодами всех возникших ошибок. Но так как в диалоговом окне "Пошаговое исполнение макроса" не выводится описание ошибки, мы рекомендуем использовать метод с вложенными макросами обработки ошибок, описанный в предыдущем разделе.

Чтобы перейти в пошаговый режим:

  1. Откройте макрос в Конструкторе.

  2. На вкладке Конструктор в группе Сервис нажмите кнопку По шагам.

  3. Сохраните и закройте макрос.

При следующем запуске макроса откроется диалоговое окно Пошаговое исполнение макроса. В нем выводятся следующие сведения о каждой макрокоманде:

  • имя макроса;

  • условие (для блоков "Если");

  • имя макрокоманды;

  • аргументы;

  • номер ошибки (номер 0 означает, что ошибки нет).

При пошаговом исполнении макрокоманд можно использовать следующие три кнопки в диалоговом окне:

  • Чтобы просмотреть сведения о следующей макрокоманде, нажмите кнопку По шагам.

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

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

    Примечания: 

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

    • Чтобы перейти в пошаговый режим по время выполнения макроса, нажмите клавиши CTRL+BREAK.

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

    • Пошаговый режим недоступен для веб-баз данных.

К началу страницы

Преобразование макроса в код VBA

Макросы предоставляют подмножество команд, доступных на языке программирования Visual Basic для приложений (VBA). Если вы решили, что вам нужно больше функциональных возможностей, чем могут предоставить макросы, можно легко преобразовать автономный объект макроса в код VBA, а затем использовать расширенный набор функций, предоставляемый VBA. Однако помните, что код VBA не будет выполняться в браузере. Любой код VBA, добавленный в веб-базу данных, будет выполняться только в том случае, если база данных открыта в Access.

Примечание: Внедренные макросы невозможно преобразовать в код VBA.

Чтобы преобразовать макрос в код VBA:

  1. В области навигации щелкните объект макроса правой кнопкой мыши и выберите пункт "Конструктор".

  2. На вкладке Конструктор в группе Сервис выберите команду Преобразовать макросы в Visual Basic.

  3. В диалоговом окне Преобразование макроса укажите, нужно ли добавлять код обработки ошибок и примечания в модуль VBA, а затем нажмите кнопку Преобразовать.

Access подтвердит, что макрос был преобразован, и откроет редактор Visual Basic. Дважды щелкните преобразованный макрос в области проекта, чтобы просмотреть и изменить модуль.

К началу страницы

Нужна дополнительная помощь?

Нужны дополнительные параметры?

Изучите преимущества подписки, просмотрите учебные курсы, узнайте, как защитить свое устройство и т. д.

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