Puede usar macros de Access para crear menús contextuales personalizados que aparecen al hacer clic con el botón derecho 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, realice tres pasos principales:
-
Create un objeto de macro con submacros que contienen los comandos de menú.
-
Create otro objeto de macro que crea 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.
Sugerencia: Si desea obtener información sobre cómo crear menús contextuales personalizados en Access con código de Visual Basic para Aplicaciones (VBA), vea el artículo Create un menú contextual para un formulario, un control de formulario o un informe.
Paso 1: Create un objeto de macro con submacros que contienen los comandos de menú
En este paso, creará un objeto de macro con submacros, cada submacro 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. Submacros dentro de un objeto de macro se puede llamar por separado de varios eventos de objeto y control. Los submacros individuales dentro de un objeto de macro tienen un nombre único y pueden contener una o más 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 a la submacro el nombre que desea mostrar en el menú contextual (por ejemplo, "Imprimir" o "Actualizar").
Sugerencia: Para crear una tecla de acceso de modo que pueda usar el teclado para elegir el comando, escriba una Y comercial (&) antes de la letra que quiere que sea la tecla de acceso en el nombre del comando (por ejemplo, "&Actualizar"). Esta letra aparecerá subrayada en el menú.
-
Dentro de la submacro, seleccione la primera acción que desea realizar al hacer clic en el comando del menú contextual.
-
Si desea realizar 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 menú contextual.
Paso 2: Create un segundo objeto de macro que crea el menú
Este paso puede parecer redundante, pero para crear el menú contextual desde el 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 Agregarmenú.
-
En el cuadro de argumento Nombre del menú de la acción de macro AgregarMenú , escriba el nombre del menú (por ejemplo, "Comandos de formulario"). Este argumento no es necesario, pero se recomienda si, en el paso 3, planea agregar el menú a una pestaña de la cinta (como la pestaña Complementos de un formulario o informe). Si el menú se agrega como menú contextual en el paso 3, el argumento Nombre del menú se ignora.
-
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.
En la ilustración siguiente se 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
Según dónde quiera 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 para 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, a continuación, 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 Barra de menús, escriba el nombre del objeto de macro que creó en el paso 2 (en este ejemplo, "mcrAddShortcutMenu").
-
Guarde los cambios en el 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 Create una cinta personalizada en Access.
Agregar el menú como menú contextual para 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 desee que aparezca el menú contextual y, a continuación, 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 u objeto al que desea 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 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 Menú contextual está establecida en Sí.
-
Guarde los cambios en el formulario o informe.
La próxima vez que abra el formulario o informe y, después, haga clic con el botón derecho en el formulario, informe o control, verá el menú contextual con los comandos asociados, como se muestra en la siguiente ilustración:
Agregar el menú como menú contextual global
Este procedimiento reemplaza todos los menús contextuales predeterminados de la base de datos actual. Los menús contextuales personalizados que adjuntó a formularios, informes o controles específicos no se ven afectados.
-
Haga clic en Archivo > Opciones.
-
En el cuadro de diálogo Opciones de Access, haga clic en Base de datos activa.
-
En Opciones de cinta y barra de herramientas, en el cuadro 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 adjuntos. Si desea conservar determinados comandos de Access para usarlos en estos menús, use la acción de macro EjecutarComando para colocar los comandos en los objetos de macro de los menús en los que desee.
Un menú contextual personalizado que se adjunta a un control sustituye a cualquier otro menú contextual personalizado definido en la base de datos. Un menú contextual personalizado que se adjunta a un formulario o informe sustituye a un menú contextual global personalizado.
Al especificar una macro de menú para un formulario o informe o para la base de datos, Access ejecuta esta macro de menú siempre que se abre 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 de submenú, como se muestra en la siguiente ilustración:
A continuación, siga de nuevo el paso 1 para definir los comandos para el objeto de menú de nivel superior. Agregue el submenú como elemento en el objeto de macro de nivel superior con la acción de macro AgregarMenú . 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 las acciones de macro AgregarMenú 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 AgregarMenú ; 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 de macro de menú de nivel superior. Es decir, puede usar una expresión de condición en un objeto de macro de menú para determinar si se mostrará un menú o un menú contextual determinados, 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.