Макросы Access можно использовать для создания настраиваемых контекстных меню, которые отображаются при щелчке правой кнопкой мыши форм, отчетов или отдельных элементов управления. Вы также можете создавать настраиваемые меню, которые отображаются на ленте для определенных форм или отчетов.
Чтобы создать меню с помощью макросов, выполните три main действия:
-
Create объект макроса с submacros, который содержит команды меню.
-
Create другой объект макроса, создающий само меню.
-
Подключите меню к элементу управления, форме, отчету или к базе данных в целом.
Эти действия подробно описаны в следующих разделах.
Совет: Если вы хотите узнать, как создавать настраиваемые контекстные меню в Access с помощью кода Visual Basic для приложений (VBA), см. статью Create контекстное меню для формы, элемента управления форм или отчета.
Шаг 1. Create объекта макроса с submacros, который содержит команды меню
На этом шаге вы создадите объект макроса с submacros, каждый из которых будет отдельной командой в контекстном меню.
Что такое субмакро?
Для определения набора макрокоманды можно использовать подмакро в объекте макроса. Submacros в объекте макроса можно вызывать отдельно от различных событий элемента управления и объекта. Каждый из отдельных подмакросов в объекте макроса имеет уникальное имя и может содержать одно или несколько макрокоманд.
-
На вкладке Создание в группе Макросы и код нажмите кнопку Макрос.
-
Для каждой команды, которая требуется в пользовательском контекстном меню:
-
Добавьте оператор Submacro Macro в окно конструктора макросов и назовите submacro, который будет отображаться в контекстном меню (например, "Печать" или "Обновить").
Совет: Чтобы создать клавишу доступа для выбора команды с помощью клавиатуры, введите амперсанд (&) перед буквой, которая должна быть ключом доступа в имени команды (например, "&Обновить"). Эта буква будет подчеркнута в меню.
-
В подмакро выберите первое действие, выполняеме при щелчке команды в контекстном меню.
-
Если при выборе этой команды требуется выполнить больше действий, добавьте их в качестве отдельных макрокоманды в одном подмакро.
-
-
Сохраните и присвойте объекту макроса имя , например mcrShortcutMenuCommands.
На следующем рисунке показан пример объекта макроса с тремя вложенными макросами для пользовательского меню или контекстного меню.
Шаг 2. Create второго объекта макроса, создающего меню
Этот шаг может показаться избыточным, но чтобы создать контекстное меню из объекта макроса, созданного на шаге 1, необходимо создать второй объект макроса, содержащий макрокоманду AddMenu. Это макрокоманду иногда называют макросом меню.
-
На вкладке Создание в группе Макросы и код нажмите кнопку Макрос.
-
В поле со списком Добавить новое действие в окне конструктора макросов выберите ДобавитьМеню.
-
В поле аргумента Имя меню макрокоманда AddMenu введите имя меню (например, "Команды формы"). Этот аргумент не является обязательным, но рекомендуется, если на шаге 3 вы планируете добавить меню на вкладку ленты (например, вкладку Надстройки формы или отчета). Если меню добавлено в качестве контекстного меню на шаге 3, аргумент Имя меню игнорируется.
-
В поле Аргумент Имя макроса меню введите имя объекта макроса, созданного на шаге 1.
-
Сохраните и присвойте этому второму объекту макроса имя, например mcrAddShortcutMenu.
На следующем рисунке показан пример макроса меню, который создает меню, разработанное на шаге 1.
Шаг 3. Присоединение меню к элементу управления, форме, отчету или базе данных
В зависимости от того, где будет отображаться меню, используйте одну или несколько из следующих процедур.
Добавление меню на вкладку Add-Ins формы или отчета
Используйте эту процедуру, если нужно, чтобы меню отображалось на вкладке Надстройки для определенной формы или отчета.
-
В области навигации щелкните правой кнопкой мыши форму или отчет, в которых будет отображаться меню, и выберите пункт Конструктор.
-
На вкладке Конструктор в группе Сервис нажмите кнопку Окно свойств.
-
Выделите весь объект, выбрав Форма или Отчет в списке в верхней части области задач "Лист свойств".
-
На вкладке Другие на странице свойств в поле Свойства Строка меню введите имя объекта макроса, созданного на шаге 2 (в этом примере mcrAddShortcutMenu).
-
Сохраните форму или отчет об изменениях.
При следующем открытии формы или отчета на ленте появляется вкладка Надстройки . Щелкните вкладку, чтобы увидеть меню, как показано на следующем рисунке:
Дополнительные сведения о способах настройки ленты, таких как добавление настраиваемых вкладок или скрытие вкладок по умолчанию, см. в статье Create настраиваемой ленты в Access.
Добавление меню в виде контекстного меню для формы, отчета или элемента управления
Используйте эту процедуру, если нужно, чтобы меню отображалось при щелчке правой кнопкой мыши определенной формы, отчета или элемента управления.
-
В области навигации щелкните правой кнопкой мыши форму или отчет, в которых нужно отобразить контекстное меню, и выберите пункт Конструктор.
-
На вкладке Конструктор в группе Сервис нажмите кнопку Окно свойств.
-
Выберите элемент управления или объект, к которому нужно присоединить контекстное меню.
Чтобы выделить весь объект, выберите Форма или Отчет в списке в верхней части области задач "Лист свойств".
-
На вкладке Другое на странице свойств в поле свойства Контекстная строка меню введите имя объекта макроса, созданного на шаге 2 (в этом примере "mcrAddShortcutMenu").
-
Убедитесь, что для свойства Контекстное меню задано значение Да.
-
Сохраните форму или отчет об изменениях.
В следующий раз, когда вы откроете форму или отчет, а затем щелкните правой кнопкой мыши форму, отчет или элемент управления, вы увидите контекстное меню со связанными командами, как показано на следующем рисунке:
Добавление меню в качестве глобального контекстного меню
Эта процедура заменяет все контекстные меню по умолчанию в текущей базе данных. Пользовательские контекстные меню, присоединенные к определенным формам, отчетам или элементам управления, не затрагиваются.
-
Выберите Файл > Параметры.
-
В диалоговом окне Параметры Access щелкните элемент Текущая база данных.
-
В разделе Параметры ленты и панели инструментов в поле Контекстная строка меню введите имя макроса, созданного на шаге 2 (в этом примере mcrAddShortcutMenu).
-
Нажмите кнопку ОК , чтобы сохранить изменения в диалоговом окне Параметры доступа .
-
Закройте и снова откройте базу данных, чтобы изменения вступили в силу.
Пользовательские контекстные меню заменяют контекстные меню по умолчанию для объектов, к которому они подключены. Если вы хотите сохранить определенные команды Access, которые будут использоваться в этих меню, используйте макрокоманду RunCommand , чтобы поместить команды в объекты макросов для меню, в которые они будут отображаться.
Пользовательское контекстное меню, присоединенное к элементу управления, заменяет все другие настраиваемые контекстные меню, определенные в базе данных. Пользовательское контекстное меню, присоединенное к форме или отчету, заменяет пользовательское глобальное контекстное меню.
При указании макроса меню для формы, отчета или базы данных Access запускает этот макрос меню при открытии формы, отчета или базы данных. Если вы вносите изменения в объект макроса меню или объект макроса, определяющий его команды, пока форма, отчет или база данных открыты, необходимо закрыть форму, отчет или базу данных и снова открыть ее, чтобы увидеть изменения.
Чтобы создать подменю в списке команд контекстного меню, выполните шаг 1, чтобы создать отдельный объект макроса, содержащий только команды подменю, как показано на следующем рисунке:
Затем выполните шаг 1 еще раз, чтобы определить команды для объекта меню более высокого уровня. Добавьте подменю в качестве элемента объекта макроса более высокого уровня с помощью макрокоманды AddMenu . На следующем рисунке показан объект макроса для меню, содержащего подменю. Третий вложенный объект макроса в этом примере создает подменю Export to... (mcrShortcutSubMenuCommands).
На следующем рисунке показано итоговое готовое контекстное меню с подменю:
Можно создать несколько уровней подменю с помощью макрокоманды AddMenu в объектах макросов для каждого уровня меню. Обязательно укажите значение аргумента Имя меню для каждого действия AddMenu , в противном случае подменю будет отображаться как пустая строка в меню более высокого уровня.
Условия выражения макросов, использующие блоки If/Then/Else , поддерживаются только в объекте макроса меню верхнего уровня. Другими словами, можно использовать выражение условия в объекте макроса меню, чтобы определить, будет ли отображаться определенное меню или контекстное меню, но только для меню на верхнем уровне. Выражения условий нельзя использовать для отображения или скрытия команд или подменю в меню. Вы также можете использовать выражение условия для скрытия или отображения пользовательского контекстного меню или глобального контекстного меню.
При необходимости макрос меню, создаваемый на шаге 2, может быть частью объекта макроса. Например, если у вас есть несколько контекстных меню для разных объектов или элементов управления, можно создать один объект макроса, содержащий все необходимые макросы меню. Убедитесь, что у каждого подмакро есть уникальное имя. На шаге 3 используйте следующую нотацию для ссылки на макрос: MacroObjectName.SubmacroName. Например, mcrAddShortcutMenus.AddMenu2.