Puede usar las macros de Access para crear menús contextuales personalizados que aparecen al hacer clic con el botón secundario en formularios, informes o controles individuales. También puede crear menús personalizados que aparecen en la cinta de opciones para formularios o informes específicos.
Para crear un menú mediante macros, siga tres pasos principales:
- Cree un objeto de macro con submacros que contengan los comandos de menú.
- Cree otro objeto de macro que cree el propio menú.
- Adjunte el menú a un control, un formulario, un informe o a la base de datos en su conjunto.
Las siguientes secciones le guiarán a través de estos pasos en detalle.
Recomendación
Si quiere obtener información sobre cómo crear menús contextuales personalizados en Access usando código de Visual Basic para Aplicaciones (VBA), vea el artículo Crear un menú contextual para un formulario, un control de formulario o un informe.
Paso 1: Crear un objeto de macro con submacros que contengan los comandos de menú
En este paso, creará un objeto de macro con submacros, cada submacro de los cuales será un comando independiente en el menú contextual.
¿Qué es una submacro?
Puede usar una submacro dentro de un objeto de macro para definir un conjunto de acciones de macro. Las submacros dentro de un objeto macro se pueden llamar por separado de varios eventos de control y objeto. Las submacros individuales de un objeto de macro tienen un nombre único y pueden contener una o varias acciones de macro.
En el grupo Macros y código de la pestaña Crear, haga clic en Macro.
Para cada comando que desee en el menú contextual personalizado:
Agregue una instrucción Submacro Macro a la ventana de diseño de macros y asigne al submacro el nombre que quiera mostrar en el menú contextual (por ejemplo, "Imprimir" o "Actualizar").
Recomendación
Para crear una tecla de acceso con el fin de usar el teclado para elegir el comando, escriba un comercial (&) delante de la letra que desee que sea la tecla de acceso en el nombre del comando (por ejemplo, "&Refresh"). Esta carta se subrayará en el menú.
En la submacro, seleccione la primera acción que desea que tenga lugar al hacer clic en el comando en el menú contextual.
Si desea que se realicen más acciones al seleccionar este comando, agréguelas como acciones de macro independientes dentro de la misma submacro.
Guarde y asigne un nombre al objeto de macro, por ejemplo, mcrShortcutMenuCommands.
En la ilustración siguiente se muestra un objeto de macro de ejemplo con tres submacros para un menú personalizado o un menú contextual.
Paso 2: Crear un segundo objeto de macro que cree el menú
Este paso puede parecer redundante, pero para crear el menú contextual a partir del objeto de macro que creó en el paso 1, debe crear un segundo objeto de macro que contenga la acción de macro AddMenu. Esta acción de macro a veces se denomina "macro de menú".
- En el grupo Macros y código de la pestaña Crear, haga clic en Macro.
- En el cuadro combinado Agregar nueva acción de la ventana de diseño de macros, seleccione Agregar menú.
- En el cuadro de argumento Nombre del menú de la acción de macro AddMenu , escriba el nombre del menú (por ejemplo, "Comandos de formulario"). Este argumento no es obligatorio, pero se recomienda si, en el paso 3, tiene previsto agregar el menú a una pestaña de la cinta de opciones (como la pestaña Complementos de un formulario o informe). Si el menú se agrega como menú contextual en el paso 3, se omite el argumento Nombre del menú .
- En el cuadro de argumento Nombre de macro de menú , escriba el nombre del objeto de macro que creó en el paso 1.
- Guarde y asigne un nombre a este segundo objeto de macro, por ejemplo, mcrAddShortcutMenu.
La siguiente ilustración muestra un objeto de macro de menú de ejemplo que crea el menú que diseñamos en el Paso 1.
Paso 3: Adjuntar el menú a un control, formulario, informe o base de datos
En función de dónde desee que aparezca el menú, use uno o varios de los procedimientos siguientes.
Agregar el menú a la pestaña Add-Ins de un formulario o informe
Use este procedimiento si desea que el menú aparezca en la pestaña Complementos de un formulario o informe específico.
- En el panel de navegación, haga clic con el botón secundario en el formulario o informe donde desee que aparezca el menú y, después, haga clic en Vista Diseño.
- En el grupo Herramientas de la pestaña Diseño, haga clic en Hoja de propiedades.
- Seleccione todo el objeto seleccionando Formulario o Informe en la lista de la parte superior del panel de tareas Hoja de propiedades.
- En la pestaña Otros de la hoja de propiedades, en el cuadro de propiedades de la barra de menús , escriba el nombre del objeto de macro que creó en el paso 2 (en este ejemplo, "mcrAddShortcutMenu").
- Guarde los cambios del formulario o informe.
La próxima vez que abra el formulario o informe, la pestaña Complementos aparecerá en la cinta de opciones. Haga clic en la pestaña para ver el menú, como se muestra en la siguiente ilustración:
Para obtener más información sobre las técnicas de personalización de la cinta de opciones, como agregar pestañas personalizadas u ocultar las pestañas predeterminadas, vea el artículo Crear una cinta de opciones personalizada en Access.
Agregar el menú como menú contextual de un formulario, informe o control
Use este procedimiento si desea que el menú aparezca al hacer clic con el botón secundario en un formulario, informe o control específico.
- En el panel de navegación, haga clic con el botón secundario en el formulario o informe donde quiera que aparezca el menú contextual y, después, haga clic en Vista Diseño.
- En el grupo Herramientas de la pestaña Diseño, haga clic en Hoja de propiedades.
- Seleccione el control o el objeto al que quiere adjuntar el menú contextual.
Para seleccionar todo el objeto, seleccione Formulario o Informe en la lista de la parte superior del panel de tareas Hoja de propiedades. - En la pestaña Otros de la hoja de propiedades, en el cuadro de propiedades de la barra de menús contextuales , escriba el nombre del objeto de macro que creó en el paso 2 (en este ejemplo, "mcrAddShortcutMenu").
- Asegúrese de que la propiedad del menú contextual está establecida en Sí.
- Guarde los cambios del formulario o informe.
La próxima vez que abra el formulario o informe y, a continuación, haga clic con el botón secundario en él, informe o control, verá el menú contextual con los comandos asociados, como se muestra en la siguiente ilustración:
Agregar el menú como un menú contextual global
Este procedimiento reemplaza todos los menús contextuales predeterminados de la base de datos actual. Los menús contextuales personalizados que haya adjuntado a formularios, informes o controles específicos no se verán afectados.
- Haga clic enOpcionesde archivo>.
- En el cuadro de diálogo Opciones de Access, haga clic en Base de datos activa.
- En Opciones de la cinta de opciones y de la barra de herramientas, en el cuadro de la barra de menús contextuales , escriba el nombre de la macro que creó en el paso 2 (en este ejemplo, "mcrAddShortcutMenu").
- Haga clic en Aceptar para guardar los cambios en el cuadro de diálogo Opciones de Access .
- Cierre y vuelva a abrir la base de datos para que los cambios surtan efecto.
Los menús contextuales personalizados reemplazan los menús contextuales predeterminados de los objetos a los que están conectados. Si desea conservar ciertos comandos de Access para usarlos en estos menús, use la acción de macro RunCommand para colocar los comandos en los objetos de macro de los menús en los que los desea.
Un menú contextual personalizado que se adjunta a un control reemplaza a cualquier otro menú contextual personalizado definido en la base de datos. Un menú contextual personalizado que se adjunta a un formulario o informe reemplaza a un menú contextual global personalizado.
Cuando especifica una macro de menú para un formulario o un informe o para la base de datos, Access ejecuta esta macro de menú siempre que se abra el formulario, el informe o la base de datos. Si realiza cambios en el objeto de macro de menú o en el objeto de macro que define sus comandos mientras el formulario, informe o base de datos está abierto, debe cerrar el formulario, informe o base de datos y volver a abrirlo para ver los cambios.
Para crear un submenú en una lista de comandos de menú contextual, siga el Paso 1 para crear un objeto de macro independiente que contenga solo los comandos del submenú, como se muestra en la siguiente ilustración:
A continuación, siga el paso 1 de nuevo para definir los comandos del objeto de menú de nivel superior. Agregue el submenú como un elemento en el objeto de macro de nivel superior mediante la acción de macro AddMenu . En la ilustración siguiente se muestra el objeto de macro de un menú que contiene un submenú. La tercera submacro de este objeto de macro de ejemplo crea el submenú Exportar a... (mcrShortcutSubMenuCommands).
En la ilustración siguiente se muestra el menú contextual completado resultante con un submenú:
Puede crear varios niveles de submenús mediante acciones de macro AddMenu en los objetos de macro para cada nivel de menú. Asegúrese de proporcionar un valor para el argumento Nombre del menú para cada acción AddMenu ; de lo contrario, el submenú aparecerá como una línea en blanco en el menú de nivel superior.
Las condiciones de expresión de macro que usan bloques If/Then/Else solo se admiten en el objeto macro del menú de nivel superior. En otras palabras, puede usar una expresión de condición en un objeto de macro de menú para determinar si se mostrará un menú o menú contextual determinado, pero solo para los menús del nivel superior. No puede usar expresiones de condición para mostrar u ocultar comandos o submenús en los menús. También puede usar una expresión de condición para ocultar o mostrar un menú contextual personalizado o un menú contextual global.
Opcionalmente, la macro de menú que cree en el paso 2 puede formar parte de un objeto de macro. Por ejemplo, si tiene varios menús contextuales para distintos objetos o controles, puede crear un único objeto de macro que contenga todas las macros de menú necesarias. Asegúrese de tener un nombre único para cada submacro. En el paso 3, use la siguiente notación para hacer referencia a la macro: MacroObjectName.SubmacroName. Por ejemplo, mcrAddShortcutMenus.AddMenu2.