Estoy desarrollando una extensión de cinta personalizada para Excel, en la que un control requiere diferentes imágenes personalizadas. Logré usar algunas imágenes ubicadas en mi sistema de archivos, pero me gustaría insertar estas imágenes dentro del archivo .xlsm. ¿Es posible hacerlo y hacer referencia a ellos desde el código VBA que actualiza la imagen del control?Cómo incrustar imágenes en el archivo de Office para cinta personalizada
Para propósitos de prueba, este es el XML que define mi cinta de encargo:
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="ribbonLoaded">
<ribbon>
<tabs>
<tab idMso="TabHome" >
<group id="customGroup1" label="My Group" insertAfterMso="GroupFont">
<button id="customButton1" label="Click Me" size="large" onAction="Macro1" getImage="getButtonImage"/>
</group>
</tab>
</tabs>
</ribbon>
</customUI>
Y esta es la macro que cambie la imagen del control customButton1
:
Dim imgIndex As Long
Public Sub getButtonImage(ByVal control As IRibbonControl, ByRef Image)
Select Case control.ID
Case "customButton1"
Set Image = LoadPicture("img" + Trim(Str(imgIndex)) + ".bmp")
imgIndex = (imgIndex + 1) Mod 2
End Select
End Sub
He intentado añadir los archivos bmp dentro de .xlsm y hacer referencia a ellos actualizando el archivo de relaciones (.rels), pero no sé cómo hacer referencia a ellos desde VBA y, lo más importante, cuando abro el archivo con Excel y lo guardo, se eliminan automáticamente ...
¡Se agradece cualquier ayuda!
¿Necesita agregar algunas imágenes una vez o necesita actualizar el archivo con nuevas imágenes varias veces? Si solo necesita agregarlos una vez que los puede agregar en el XML personalizado de UI, use el [Editor de interfaz de usuario personalizada] (http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2009/08/07/7293.aspx) Si necesita actualizarlos con frecuencia, ese método podría no funcionar tan bien. –
Solo necesito agregar las imágenes una vez. El Editor de IU personalizado fue muy útil para resolver el primer problema de incrustación (de forma manual estaba haciendo referencia a las imágenes en el archivo .rels incorrecto ...). Pero, ¿cómo se puede acceder y cargar en VBA? Creo que la función LoadPicture no funciona con ellos ... –