Estoy buscando una forma de agregar una pestaña personalizada en la cinta de Excel que llevaría algunos botones. Me encontré con algunos recursos que lo abordan a través de Google, pero todos parecen dudosos y escandalosamente complicados.
¿Cuál es una forma rápida y sencilla de hacerlo? Me gustaría que la nueva pestaña se cargue cuando mi VBA se cargue en Excel.
ACTUALIZACIÓN : Probé este ejemplo desde aquí pero obtengo un error de "objeto requerido" en la última instrucción:
Public Sub AddHighlightRibbon()
Dim ribbonXml As String
ribbonXml = "<mso:customUI xmlns:mso=""http://schemas.microsoft.com/office/2009/07/customui"">"
ribbonXml = ribbonXml + " <mso:ribbon>"
ribbonXml = ribbonXml + " <mso:qat/>"
ribbonXml = ribbonXml + " <mso:tabs>"
ribbonXml = ribbonXml + " <mso:tab id=""highlightTab"" label=""Highlight"" insertBeforeQ=""mso:TabFormat"">"
ribbonXml = ribbonXml + " <mso:group id=""testGroup"" label=""Test"" autoScale=""true"">"
ribbonXml = ribbonXml + " <mso:button id=""highlightManualTasks"" label=""Toggle Manual Task Color"" "
ribbonXml = ribbonXml + "imageMso=""DiagramTargetInsertClassic"" onAction=""ToggleManualTasksColor""/>"
ribbonXml = ribbonXml + " </mso:group>"
ribbonXml = ribbonXml + " </mso:tab>"
ribbonXml = ribbonXml + " </mso:tabs>"
ribbonXml = ribbonXml + " </mso:ribbon>"
ribbonXml = ribbonXml + "</mso:customUI>"
ActiveProject.SetCustomUI (ribbonXml)
End Sub
excel
vba
excel-2007
ribbonx
Zumbido
fuente
fuente
Respuestas:
AFAIK, no puede usar VBA Excel para crear una pestaña personalizada en la cinta de Excel. Sin embargo, puede ocultar / hacer visible un componente de cinta usando VBA. Además, el enlace que mencionó anteriormente es para MS Project y no para MS Excel.
Creo pestañas para mis aplicaciones / complementos de Excel usando esta utilidad gratuita llamada Custom UI Editor .
Editar: para dar cabida a una nueva solicitud de OP
Tutorial
Aquí hay un breve tutorial como se prometió:
Después de haber instalado el editor de IU personalizado (CUIE), ábralo y luego haga clic en Archivo | Abra y seleccione el archivo de Excel correspondiente. Asegúrese de que el archivo de Excel esté cerrado antes de abrirlo a través de CUIE. Estoy usando una hoja de trabajo nueva como ejemplo.
Haga clic derecho como se muestra en la imagen siguiente y haga clic en "Parte de la interfaz de usuario personalizada de Office 2007". Insertará el "customUI.xml"
Siguiente Haga clic en el menú Insertar | XML de muestra | Pestaña personalizada. Notarás que el código básico se genera automáticamente. Ahora ya está todo listo para editarlo según sus requisitos.
Inspeccionemos el código
label="Custom Tab"
: Reemplace "Pestaña personalizada" con el nombre que desea darle a su pestaña. Por el momento llamémoslo "Jerome".La parte de abajo agrega un botón personalizado.
imageMso
: Esta es la imagen que se mostrará en el botón. "HappyFace" es lo que verá en este momento. Puede descargar más ID de imagen aquí .onAction="Callback"
: "Devolución de llamada" es el nombre del procedimiento que se ejecuta cuando hace clic en el botón.Manifestación
Con eso, creemos 2 botones y llamémoslos "Botón JG 1" y "Botón JG 2". Mantengamos la cara feliz como la imagen del primero y mantengamos el "Sol" para el segundo. El código modificado ahora se ve así:
Elimine todo el código que se generó en CUIE y luego pegue el código anterior en lugar de eso. Guarde y cierre CUIE. Ahora, cuando abra el archivo de Excel, se verá así:
Ahora la parte del código. Abra VBA Editor, inserte un módulo y pegue este código:
Guarde el archivo de Excel como un archivo habilitado para macros. Ahora, cuando haga clic en Smiley o Sun, verá el cuadro de mensaje correspondiente:
¡Espero que esto ayude!
fuente
Pude lograr esto con VBA en Excel 2013. No se necesitan editores especiales. Todo lo que necesita es el editor de código de Visual Basic al que se puede acceder en la pestaña Desarrollador. La pestaña Desarrollador no está visible de forma predeterminada, por lo que debe habilitarse en Archivo> Opciones> Personalizar cinta. En la pestaña Desarrollador, haga clic en el botón Visual Basic. Se iniciará el editor de código. Haga clic con el botón derecho en el panel Explorador de proyectos a la izquierda. Haga clic en el menú Insertar y elija módulo. Agregue ambos subs a continuación al nuevo módulo.
Llame al sub de LoadCustRibbon en el Wookbook abierto incluso y llame al sub de ClearCustRibbon en el evento Before_Close del archivo de código de ThisWorkbook.
fuente
Luché como un loco, pero esta es en realidad la respuesta correcta. Por lo que vale, lo que me perdí fue esto:
Por cierto, la página que lo explica en el sitio de Ron ahora está en http://www.rondebruin.nl/win/s2/win002.htm
Y aquí está su ejemplo sobre cómo habilitar / deshabilitar botones en la cinta http://www.rondebruin.nl/win/s2/win013.htm
Para ver otros ejemplos xml de cintas, consulte también http://msdn.microsoft.com/en-us/library/office/aa338202%28v=office.12%29.aspx
fuente
Las respuestas aquí son específicas para usar el editor de IU personalizado. Pasé un tiempo creando la interfaz sin ese maravilloso programa, así que estoy documentando la solución aquí para ayudar a cualquier otra persona a decidir si necesita ese editor de interfaz de usuario personalizado o no.
Encontré la siguiente página web de ayuda de Microsoft: https://msdn.microsoft.com/en-us/library/office/ff861787.aspx . Esto muestra cómo configurar la interfaz manualmente, pero tuve algunos problemas al señalar mi código de complemento personalizado.
Para que los botones funcionen con sus macros personalizadas, configure la macro en sus subs .xlam para que se llame como se describe en esta respuesta SO - Llamar a una macro de Excel desde la cinta . Básicamente, necesitará agregar ese parámetro "control As IRibbonControl" a cualquier módulo apuntado desde su cinta xml. Además, su cinta xml debe tener la sintaxis onAction = "myaddin! Mymodule.mysub" para llamar correctamente a cualquier módulo cargado por el complemento.
Usando esas instrucciones, pude crear un complemento de Excel (archivo .xlam) que tiene una pestaña personalizada cargada cuando mi VBA se carga en Excel junto con el complemento. Los botones ejecutan el código del complemento y la pestaña personalizada se desinstala cuando Elimino el complemento.
fuente
Además de la respuesta de Roi-Kyi Bryant, este código funciona completamente en Excel 2010. Presione ALT + F11 y aparecerá el editor de VBA. Haga doble clic en
ThisWorkbook
en el lado izquierdo, luego pegue este código:No olvide guardar y volver a abrir el libro de trabajo. ¡Espero que esto ayude!
fuente
Encontré dificultades con la solución de Roi-Kyi Bryant cuando varios complementos intentaron modificar la cinta. Tampoco tengo acceso de administrador en mi computadora de trabajo, lo que descartó instalar el
Custom UI Editor
. Entonces, si está en el mismo barco que yo, aquí hay un ejemplo alternativo para personalizar la cinta usando solo Excel. Tenga en cuenta que mi solución se deriva de la guía de Microsoft ..xlam
archivosChart Tools.xlam
yPriveleged UDFs.xlam
, para demostrar cómo varios complementos pueden interactuar con la cinta.customUI
y_rels
.customUI
carpeta, cree uncustomUI.xml
archivo. ElcustomUI.xml
archivo detalla cómo interactúan los archivos de Excel con la cinta. La parte 2 de la guía de Microsoft cubre los elementos delcustomUI.xml
archivo.Mi
customUI.xml
archivo seChart Tools.xlam
parece a estoMi
customUI.xml
archivo sePriveleged UDFs.xlam
parece a esto.zip
a su nombre de archivo. En mi caso, cambié el nombreChart Tools.xlam
aChart Tools.xlam.zip
yPrivelged UDFs.xlam
aPriveleged UDFs.xlam.zip
..zip
archivo y navegue hasta la_rels
carpeta. Copie el.rels
archivo a la_rels
carpeta que creó en el Paso 3. Edite cada.rels
archivo con un editor de texto. De la guía de MicrosoftMi
.rels
archivo seChart Tools.xlam
parece a estoMi
.rels
archivo dePriveleged UDFs
tiene este aspecto..rels
archivos en cada.zip
archivo con el.rels
archivo / archivos que modificó en el paso anterior..customUI
carpeta que creó en el directorio de inicio del.zip
archivo / archivos..zip
extensión de archivo de los archivos de Excel que creó ..xlam
archivos, vuelva a Excel y agréguelos a sus complementos de Excel.onAction
palabras clave en mis botones. LaonAction
palabra clave indica que, cuando se activa el elemento contenedor, la aplicación de Excel activará la subrutina entre comillas directamente después de laonAction
palabra clave. Esto se conoce como devolución de llamada . En mis.xlam
archivos, tengo un módulo llamadoCallBacks
donde he incluido mis subrutinas de devolución de llamada.Mi
CallBacks
módulo seChart Tools.xlam
parece aMi
CallBacks
módulo sePriveleged UDFs.xlam
parece aOpción explícita
Los diferentes elementos tienen una firma de subrutina de devolución de llamada diferente. Para los botones, el parámetro de subrutina requerido es
ByRef control As IRibbonControl
. Si no cumple con la firma de devolución de llamada requerida, recibirá un error al compilar su proyecto / proyectos de VBA. La parte 3 de la guía de Microsoft define todas las firmas de devolución de llamada.Así es como se ve mi ejemplo terminado
Algunos consejos de cierre
idQ
yxlmns:
. En mi ejemplo,Chart Tools.xlam
yPriveleged UDFs.xlam
ambos tienen acceso a los elementos conidQ
's igual ax:chartToolsTab
yx:privelgedUDFsTab
. Para que esto funcione, elx:
que se requiere, y, he definido su espacio de nombres en la primera línea de micustomUI.xml
archivo,<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" xmlns:x="sao">
. La sección Dos formas de personalizar la interfaz de usuario fluida en la guía de Microsoft ofrece más detalles.isMSO
palabra clave. La sección Dos formas de personalizar la interfaz de usuario fluida en la guía de Microsoft ofrece más detalles.fuente
Otro enfoque para esto sería descargar el módulo de clase Open XML gratuito de Jan Karel Pieterse desde esta página: Editar elementos en un archivo OpenXML usando VBA
Con esto agregado a su proyecto VBA, puede descomprimir el archivo de Excel, usar VBA para modificar el XML y luego usar la clase para volver a comprimir los archivos.
fuente