2012-10-02 4 views
5

Je développe une extension de ruban personnalisé pour Excel, dans lequel un contrôle nécessite différentes images personnalisées. J'ai réussi à utiliser certaines images situées dans mon système de fichiers, mais je voudrais intégrer ces images dans le fichier .xlsm. Est-il possible de le faire et de les référencer à partir du code VBA qui met à jour l'image du contrôle?Comment insérer des images dans un fichier Office ruban personnalisé

Pour des fins de test, c'est le XML qui définit mon ruban personnalisé:

<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> 

Et ceci est la macro qui modifie l'image du contrôle 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 

J'ai essayé d'ajouter les fichiers bmp à l'intérieur du fichier .xlsm et les référencent en mettant à jour le fichier de relations (.rels), mais je ne sais pas comment les référencer depuis VBA et surtout, quand j'ouvre le fichier avec Excel et le sauvegarde, ils sont automatiquement supprimés ...

Toute aide est appréciée!

+0

Avez-vous besoin d'ajouter quelques images une fois ou avez-vous besoin de mettre à jour le fichier avec de nouvelles images plusieurs fois? Si vous ne devez les ajouter une fois que vous pouvez les ajouter dans le XML customUI en utilisant le ([Editor interface utilisateur personnalisée] http://openxmldeveloper.org/blog/b/openxmldeveloper/archive/2009/08/07/7293.aspx). Si vous avez besoin de les mettre à jour souvent, cette méthode peut ne pas fonctionner aussi bien. –

+0

J'ai seulement besoin d'ajouter les images une fois. L'éditeur d'interface utilisateur personnalisée a été très utile pour résoudre le premier problème de leur intégration (manuellement, je référençais les images dans le mauvais fichier .rels ...). Mais comment peuvent-ils être consultés et chargés dans VBA? Je pense que la fonction LoadPicture ne fonctionne pas avec eux ... –

Répondre

1

Si l'image est intégrée dans le customUI, vous n'avez pas besoin de VBA pour les ajouter à un contrôle. Il suffit d'utiliser le même ID pour l'image dans une balise image:

<button id="button1" label="Test" size="large" image="TestID" onAction="ButtonOnAction" /> 

Mon échantillon est adressant l'image avec l'ID « testid », qui doit être trouvé dans le fichier XML customUI - développez le nœud customUI dans le Custom UI Editor trouver ou changez l'identifiant de l'image (ou utilisez l'éditeur pour ajouter une nouvelle image).

+1

Merci Olle. Un peu plus près! Mais comment puis-je faire si j'ai besoin de changer dynamiquement l'image du bouton en choisissant parmi toutes les images intégrées? Le 'getButtonImage' de ma question montre ce que je veux réaliser: faire défiler un ensemble d'images (seulement 2 dans l'exemple, mais elles peuvent aller jusqu'à 256 ...) chaque fois que l'utilisateur clique sur le bouton. –

+1

Ah, c'est pourquoi j'ai demandé "une ou plusieurs fois" dans le commentaire à votre question, mais je vois maintenant ma question était un peu floue. J'ai besoin de tester ça, mais j'ai peur de ne pas avoir le temps en ce moment. Je reviendrai à vous si je le résous! –

+0

J'ai trouvé [ce lien] (http://www.rondebruin.nl/getimage.htm) de Ron de Bruin. S'il vous plaît, voir les exemples sous la rubrique intitulée _Change Image avec VBA après avoir ouvert le fichier_ pour une voie possible vers l'avant. C'est le meilleur que je peux faire pour vous aujourd'hui! –

Questions connexes