Cómo personalizar los menús de acceso directo de Excel 2016 en VBA

Cómo personalizar los menús de acceso directo de Excel 2016 en VBA

Antes de Excel 2007, los programadores de VBA usaban el objeto CommandBar para crear menús personalizados, barras de herramientas personalizadas y menús de acceso directo personalizados (clic derecho). A partir de Excel 2007, el objeto CommandBar se encuentra en una posición bastante extraña. Si escribe código para personalizar un menú o una barra de herramientas, Excel intercepta ese código e ignora muchos de sus comandos.

En lugar de mostrar la mejora de la interfaz bien pensada, Excel 2007 (como las versiones posteriores) simplemente descarga sus menús y barras de herramientas personalizados en una pestaña de cinta de opciones llamada Complementos.

Las personalizaciones de menús y barras de herramientas terminan en Complementos → Comandos de menú o Complementos → Barras de herramientas personalizadas. Pero la personalización de los menús de acceso directo (que también usa el objeto CommandBar) sigue funcionando como siempre, bueno, algo así.

¿Línea de fondo? El objeto CommandBar ya no es muy útil, pero sigue siendo la única forma de personalizar los menús contextuales.

Agregar un nuevo elemento al menú contextual de la celda

A continuación, encontrará un código de muestra que agrega un nuevo elemento al menú de acceso directo que aparece cuando hace clic con el botón derecho en una celda. Debería poder adaptar estos ejemplos a sus necesidades.

Puede mejorar un poco la utilidad Cambiar caso haciéndola disponible en el menú de acceso directo de Celda.

El procedimiento AddToShortcut agrega un nuevo elemento de menú al menú de acceso directo de Celda. Puede adaptarlo para que apunte a sus propias macros cambiando las propiedades Caption y OnAction del objeto llamado NewControl.

Sub AddToShortCut ()
  Dim Bar como CommandBar
  Atenuar NewControl como CommandBarButton
  DeleteFromShortcut
  Establecer barra = Application.CommandBars ("Celda")
  Establecer NewControl = Bar.Controls.Add _
     (Tipo: = msoControlButton, ID: = 1, _
     temporal: = Verdadero)
  Con NewControl
    .Caption = "& Cambiar mayúsculas y minúsculas"
    .OnAction = "ChangeCase"
    .Style = msoButtonIconAndCaption
  Terminar con
End Sub

Cuando modifica un menú de acceso directo, esa modificación permanece en vigor hasta que reinicia Excel. En otras palabras, los menús contextuales modificados no se restablecen cuando cierra el libro de trabajo que contiene el código VBA. Por lo tanto, si escribe código para modificar un menú de acceso directo, casi siempre escribe código para revertir el efecto de su modificación.

El procedimiento DeleteFromShortcut elimina el nuevo elemento de menú del menú de acceso directo de Celda:

Sub DeleteFromShortcut ()
  En caso de error, reanudar siguiente
  Application.CommandBars ("Celda"). Controles _
    ("& Cambiar mayúsculas y minúsculas"). Eliminar
End Sub

Esto muestra cómo se muestra el nuevo elemento de menú después de hacer clic con el botón derecho en una celda.

Cómo personalizar los menús de acceso directo de Excel 2016 en VBA

El menú de acceso directo de Celda que muestra un elemento de menú personalizado: Cambiar mayúsculas y minúsculas.

El primer comando real después de la declaración de un par de variables llama al procedimiento DeleteFromShortcut. Esta declaración garantiza que solo aparezca un elemento de menú Cambiar caso en el menú de celda de acceso directo. Intente comentar esa línea (coloque un apóstrofe al principio de la línea) y ejecute el procedimiento varias veces, ¡pero no se deje llevar!

Haga clic con el botón derecho en una celda y podrá ver varias instancias del elemento de menú Cambiar caso. Deshazte de todas las entradas ejecutando DeleteFromShortcut varias veces (una por cada elemento de menú adicional).

Finalmente, necesita una forma de agregar el elemento del menú de acceso directo cuando se abre el libro de trabajo y de eliminar el elemento del menú cuando se cierra el libro de trabajo. Hacer esto es fácil. Simplemente agregue estos dos procedimientos de eventos al módulo de código ThisWorkbook:

Private Sub Workbook_Open ()
Llamar a AddToShortCut
End Sub
Private Sub Workbook_BeforeClose (Cancelar como booleano)
Llamar DeleteFromShortcut
End Sub

El procedimiento Workbook_Open se ejecuta cuando se abre el libro y el procedimiento Workbook_BeforeClose se ejecuta antes de que se cierre el libro. Justo lo que recetó el doctor.

¿Qué es diferente en Excel 2013 y Excel 2016?

Si ha utilizado VBA para trabajar con menús contextuales en Excel 2007 o versiones anteriores, debe estar al tanto de un cambio significativo.

En el pasado, si su código modificaba un menú de acceso directo, esa modificación estaba vigente para todos los libros de trabajo. Por ejemplo, si agregó un nuevo elemento al menú del botón derecho de Celda, ese nuevo elemento aparecerá cuando haga clic con el botón derecho en una celda de cualquier libro de trabajo (además de otros libros de trabajo que abra más adelante). En otras palabras, las modificaciones del menú contextual se realizaron a nivel de la aplicación .

Excel 2013 y Excel 2016 usan una única interfaz de documento y eso afecta los menús contextuales. Los cambios que realice en los menús contextuales solo afectarán a la ventana del libro activo. Cuando ejecuta el código que modifica el menú de acceso directo, el menú de acceso directo para ventanas distintas de la ventana activa no cambiará. Esta es una desviación radical de cómo solían funcionar las cosas.

Otro giro: si el usuario abre un libro de trabajo (o crea un nuevo libro de trabajo) cuando la ventana activa muestra el menú de acceso directo modificado, el nuevo libro también muestra el menú de acceso directo modificado. En otras palabras, las nuevas ventanas muestran los mismos menús contextuales que la ventana que estaba activa cuando se abrieron las nuevas ventanas.

En pocas palabras: en el pasado, si abría un libro de trabajo o un complemento que modificaba los menús contextuales, podía estar seguro de que los menús contextuales modificados estarían disponibles en todos los libros de trabajo. Ya no tienes esa seguridad.

Crear menús contextuales personalizados en Access 2007

La ventana de diseño de macros es diferente en Access 2007 en comparación con versiones posteriores, así que expanda las siguientes secciones para seguirlas si está utilizando Access 2007.

Paso 1 para Access 2007: cree un grupo de macros que contenga los comandos del menú

En este paso, crea un grupo de macros, cada macro del cual será un comando separado en su menú contextual.

¿Qué es un macrogrupo?

Un grupo de macros es un único objeto de macro que contiene dos o más macros independientes. Las macros individuales se identifican escribiendo un nombre para cada macro en la columna Nombres de macro. En la siguiente ilustración,  Macro3  es un grupo de macros. NotFoundMsg  y  FoundMsg  son macros individuales dentro del grupo y cada macro consta de dos acciones de macro.

Ejemplo de grupo de macros

Nota:  La  columna Nombre de macro  está oculta de forma predeterminada. Para mostrar la  columna Nombre de macro  , en la  pestaña Diseño  , en el   grupo  Mostrar/Ocultar , haga clic en Nombres de macro .

  1. En la  pestaña Crear  , en el   grupo  Otro , haga clic en Macro . Si este comando no está disponible, haga clic en la flecha debajo del  botón Módulo  o  Módulo de clase  y luego haga clic en  Macro .

  2. En la   pestaña  Diseño , en el grupo Mostrar/Ocultar  , haga clic en  Nombres de macro  para mostrar la  columna Nombre de macro  .

  3. Para cada comando que desee en su menú contextual personalizado:

    • En la  columna Nombre de la macro  , ingrese el texto que desea mostrar en el menú contextual (por ejemplo, "Imprimir informe" o "Guardar").

      Nota:  Para crear una clave de acceso para que pueda usar el teclado para elegir el comando, escriba un signo (&) antes de la letra que desea que sea la clave de acceso en el nombre del comando (por ejemplo, "&Guardar"). Esta letra estará subrayada en el menú.
    • En la  columna Acción  , seleccione la primera acción que le gustaría que se realice cuando haga clic en el comando en el menú contextual.

    • Si hay más acciones que desea que se realicen cuando selecciona este comando, agréguelas en las líneas siguientes. Para cada acción posterior, deje la  celda Nombre de macro  en blanco.

      Nota:  Para crear una línea entre dos comandos de menú, escriba un guión (-) en la  columna Nombre de macro  entre los comandos de menú correspondientes.
  4. Guarde y asigne un nombre a la macro, por ejemplo,   mcrShortcutMenuCommands .

La siguiente ilustración muestra un grupo de macros de ejemplo para un menú personalizado o un menú contextual.

Un grupo de macros de menú en la vista Diseño

Paso 2 para Access 2007: cree una macro que cree el menú

Este paso puede parecer redundante, pero para crear el menú contextual a partir del grupo de macros que creó en el Paso 1, debe crear una segunda macro que contenga la   acción de macro AgregarMenu . Esta macro a veces se denomina "macro de menú".

  1. En la  pestaña Crear  , en el   grupo  Otro , haga clic en Macro . Si este comando no está disponible, haga clic en la flecha debajo del  botón Módulo  o  Módulo de clase  y luego haga clic en  Macro .

  2. En la primera línea de la macro, seleccione  AgregarMenú  en la  lista Acción  .

  3. En  Argumentos de acción , en el  cuadro Nombre del menú  , escriba el nombre del menú (por ejemplo, "Comandos de informe"). Este argumento no es obligatorio, 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, se ignora el  argumento Nombre del menú  .

  4. En el  cuadro Nombre de la macro del menú  , ingrese el nombre de la macro que creó en el Paso 1.

  5. Guarde y asigne un nombre a la macro, por ejemplo,  mcrAddShortcutMenu .

La siguiente ilustración muestra una macro de menú de ejemplo que crea el menú que diseñamos en el Paso 1.

Una macro de menú en la vista Diseño

Paso 3 para Access 2007: adjunte el menú a un control, formulario, informe o base de datos

Dependiendo de dónde desee que aparezca el menú, utilice uno o más de los siguientes procedimientos.

  • Agregar el menú a la pestaña Complementos de un formulario o informe

    Utilice este procedimiento si desea que el menú aparezca en la  pestaña Complementos  para un formulario o informe específico, como se muestra en la siguiente ilustración:

    Pestaña Complementos que contiene un menú personalizado

    1. En el Panel de navegación, haga clic con el botón derecho en el formulario o informe donde desea que aparezca el menú y luego haga clic en  Vista Diseño .

    2. En la  pestaña Diseño  , en el  grupo Mostrar/Ocultar  , haga clic en  Hoja de propiedades .

    3. Seleccione todo el objeto seleccionando  Formulario  o  Informe  de la lista en la parte superior del panel de tareas Hoja de propiedades.

    4. En la  pestaña Otro  de la Hoja de propiedades, en el  cuadro de propiedades Menú contextual  , escriba el nombre de la macro que creó en el Paso 2 (en este ejemplo, “mcrAddShortcutMenu”).

      La próxima vez que abra el formulario o informe, aparecerá la  pestaña Complementos  en la cinta. Haga clic en la pestaña para ver el menú.

      Para obtener más información sobre las técnicas de personalización de la cinta, como agregar pestañas personalizadas u ocultar las pestañas predeterminadas, consulte el artículo  Crear una cinta personalizada en Access .

      La cinta es un componente de la interfaz de usuario de Microsoft Office Fluent.

  • Agregar el menú como menú contextual para un formulario, informe o control

    Utilice este procedimiento si desea que aparezca el menú al hacer clic con el botón derecho en un formulario, informe o control específico, como se muestra en la siguiente ilustración:

    Un menú contextual sencillo

    1. En el Panel de navegación, haga clic con el botón derecho en el formulario o informe donde desea que aparezca el menú contextual y luego haga clic en  Vista Diseño .

    2. En la  pestaña Diseño  , en el  grupo Mostrar/Ocultar  , haga clic en  Hoja de propiedades .

    3. Seleccione el control u objeto al que desea adjuntar el menú contextual.

      Nota:  Para seleccionar el objeto completo, seleccione  Formulario  o  Informe  de la lista en la parte superior del panel de tareas Hoja de propiedades.

    4. En la  pestaña Otro  de la Hoja de propiedades, en el  cuadro de propiedades Barra de menús contextuales  , escriba el nombre de la macro que creó en el Paso 2 (en este ejemplo, “mcrAddShortcutMenu”).

  • Agregar el menú como menú contextual global

    Este procedimiento reemplaza todos los menús contextuales predeterminados en la base de datos actual. Los menús contextuales personalizados que haya adjuntado a formularios, informes o controles específicos no se ven afectados.

    1. Haga clic en el  botón de Microsoft Office  y luego haga clic en  Opciones de acceso .

    2. En el  cuadro de diálogo Opciones de acceso  , haga clic en  Base de datos actual .

    3. En  Opciones de cinta y barra de herramientas , en el  cuadro Barra de menú de acceso directo  , escriba el nombre de la macro que creó en el Paso 2 (en este ejemplo, “mcrAddShortcutMenu”).

  • Los menús contextuales personalizados reemplazan los menús contextuales predeterminados para los objetos a los que están adjuntos. Si desea conservar ciertos comandos de Access para usarlos en estos menús, use la  acción RunCommand  para colocar los comandos en los grupos de macros de los menús en los que los desea.

  • Un menú contextual personalizado adjunto a un control reemplaza cualquier otro menú contextual personalizado definido en la base de datos. Un menú contextual personalizado adjunto a un formulario o informe reemplaza a un menú contextual personalizado global.

  • Cuando especifica una macro de menú para un formulario, informe o base de datos, Access ejecuta esta macro de menú cada vez que se abre el formulario, informe o base de datos. Si realiza cambios en la macro de menú o en el grupo de macros 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ú, siga el Paso 1 para crear un grupo de macros separado que contenga solo los comandos del submenú. Luego, siga el Paso 1 nuevamente para definir los comandos para el menú de nivel superior. Agregue el submenú como un elemento en el grupo de macros de nivel superior mediante la  acción de macro AgregarMenú  . La siguiente ilustración muestra el grupo de macros de un menú que contiene un submenú y luego muestra el menú contextual resultante. La tercera línea en el grupo de macros crea el  submenú Exportar a...  ( mcrSubMenu ).

    Un menú contextual que contiene un submenú.

    Puede crear varios niveles de submenús utilizando  acciones AddMenu  en los grupos de macros 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 macro solo se admiten en la macro del menú de nivel superior. En otras palabras, puede usar una condición en una macro de menú para determinar si se mostrará un menú en particular o un menú contextual, pero solo para los menús del nivel superior. No puede utilizar condiciones para mostrar u ocultar comandos o submenús en los menús. También puede utilizar una 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 ser parte de un grupo de macros. Por ejemplo, si tiene varios menús contextuales para diferentes objetos o controles, puede crear un único objeto macro que contenga todas las macros de menú necesarias. Asegúrese de mostrar la  columna Nombre de macro  y escriba un nombre único para cada macro. En el paso 3, utilice la siguiente notación para hacer referencia a la macro:  macrogroupname.macroname . Por ejemplo,  mcrAddShortcutMenus.AddMenu2 .


Hoja inteligente 9.1.1

Hoja inteligente 9.1.1

Smartsheet es una plataforma de trabajo dinámica que le permite gestionar proyectos, crear flujos de trabajo y colaborar con su equipo.

Compartirpunto

Compartirpunto

SharePoint es un sistema de colaboración basado en web que utiliza una variedad de aplicaciones de flujo de trabajo, bases de datos de "listas" y otros componentes web, así como funciones de seguridad para dar control a los grupos empresariales que trabajan juntos.

Calendario perpetuo 1.0.38/1.0.36

Calendario perpetuo 1.0.38/1.0.36

Van Nien Calendar es una aplicación de visualización de calendario en su teléfono, que le ayuda a ver rápidamente la fecha lunisolar en su teléfono, organizando así su importante trabajo.

Outlook 2021

Outlook 2021

Microsoft Outlook es una aplicación empresarial y de productividad desarrollada por Microsoft Corporation.

Haga clic arriba

Haga clic arriba

ClickUp es una de las plataformas de productividad mejor calificadas para cualquier empresa. Grandes empresas como Google, Booking.com, San Diego Padres y Uber utilizan ClickUp para aumentar la productividad en el lugar de trabajo.

Visor de PDF-XChange 2.5.322.10

Visor de PDF-XChange 2.5.322.10

PDF se ha convertido en un formato de uso común para leer, crear y enviar documentos de texto. A su vez, se ha producido un aumento en el número de programas utilizados para este tipo de documentación. PDF-XChange Viewer se encuentra entre un número creciente de visores de PDF.

Apache OpenOffice

Apache OpenOffice

Apache OpenOffice ofrece un conjunto completo de aplicaciones de Office que rivalizan con Microsoft 365, especialmente en Excel, PowerPoint y Word. Le permite gestionar sus proyectos de forma más eficaz y admite varios formatos de archivo.

Descargar iTaxviewer 1.8.7

Descargar iTaxviewer 1.8.7

El software iTaxViewer es el software de lectura de archivos XML más popular en la actualidad. Este software es una aplicación de lectura de declaraciones electrónicas de impuestos en formato XML de la Dirección General de Tributación.

Lector de PDF Nitro

Lector de PDF Nitro

Nitro PDF Reader es un práctico editor de PDF que cubre todas las tareas básicas que la mayoría de las personas realizan todos los días con documentos PDF.

Lector Foxit 12

Lector Foxit 12

Foxit Reader es principalmente un lector de PDF y también le permite crear archivos PDF, firmarlos, editarlos y agregar anotaciones. Funciona en sistemas operativos, existen complementos para varios programas del paquete Microsoft Office.