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