VSTO - Création d’un complément pour Microsoft Office 2007

by Fabien Lavocat 8. septembre 2009 13:00

image Cet article a pour but de vous présenter comment créer rapidement un complément à Microsoft Office 2007 qui viendra s’ajouter dans le ruban. Nous allons donc créer un projet de type Complément Excel 2007 dans Visual Studio 2008. Il est possible de créer des compléments pour InfoPath, PowerPoint, Visio, Excel, Outlook, Project et Word.

clip_image002

Vous devriez obtenir une classe nommée ThisAddIn qui contient deux méthodes :

private void ThisAddIn_Startup(object sender, System.EventArgs e)

Celle-ci est appelée au démarrage du complément. C’est ici que vous pouvez initialiser vos variables par exemple, qui seront utilisées lors de l’utilisation des fonctionnalités du complément.

private void ThisAddIn_Shutdown(object sender, System.EventArgs e)

Cette méthode est appelée à la fermeture du complément. Vous procéderez ici à la libération de la mémoire utilisée par votre complément.

Nous allons créer un ruban personnalisé. Pour cela, deux méthodes. La première est d’utiliser le concepteur visuel en ajoutant un nouvel élément de type Ruban (Concepteur visuel) :

clip_image004

Je personnalise un peu le ruban avec le thème du rugby :

clip_image006

Tout fonctionne exactement comme en Winform, à savoir que si vous double cliquez sur un bouton, Toulouse par exemple, vous allez obtenir la méthode d’abonnement à l’événement Click du bouton btToulouse :

private void btToulouse_Click(object sender, RibbonControlEventArgs e)

Il ne reste plus qu’à développer votre application derrière. Si on lance la compilation et l’exécution du complément, Excel 2007 se lance et nous obtenons bien le nouveau complément :

clip_image008

Pour utiliser les images d’Office comme ce que j’ai fait sur l’image ci-dessus, télécharger le fichier : http://www.microsoft.com/downloads/details.aspx?familyid=4329D9E9-4D11-46A5-898D-23E4F331E9AE&displaylang=en puis récupérer les ID des boutons que vous souhaitez récupérer, et définissez le code à la propriété OfficeImageId de votre bouton :

clip_image010

Maintenant, essayons la même chose avec le Ruban (XML) mais sur le thème du foot. On ajoute un nouvel élément de type Ruban (XML). Attention, vous n’allez pas pouvoir combiner le Ruban XML avec le Ruban (Concepteur visuel) que nous avons créé plus tôt, dans le même complément.

clip_image012

La première chose à faire est d’ajouter la méthode suivante à la classe ThisAddIn :

protected override Microsoft.Office.Core.IRibbonExtensibility CreateRibbonExtensibilityObject()
{
  return new RibbonXML();
}

Cette méthode nous permettra de définir le ruban qui sera chargé à savoir pour mon cas RibbonXML. Passons maintenant à la personnalisation du Ruban (XML) :

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load">
<ribbon>
    <tabs>
        <tab idMso="TabAddIns" label="Foot">

            <group id="groupL1" label="L1">
                <button id="btLyon" label="Lyon" size="large" imageMso="ChartTypeLineInsertGallery" />
                <button id="btBordeaux" label="Bordeaux" size="large" imageMso="ChartTypeLineInsertGallery" />
            </group>

            <group id="groupL2" label="L2">
                <button id="btCaen" label="Caen" size="large" imageMso="ChartTypeLineInsertGallery" />
                <button id="btClermont" label="Clermont" size="large" imageMso="ChartTypeLineInsertGallery" />
            </group>

        </tab>
    </tabs>
</ribbon>
</customUI>

Ce qui nous donne le résultat suivant :

clip_image014

Pour s’abonner à l’événement Click d’un bouton, la procédure est différente, en effet nous n’avons pas d’interface graphique pour faire comme précédemment. Il n’y a pas non plus d’événements dans la liste des possibilités d’attribut XML comme nous aurions dans un code XAML (WPF). Nous allons donc utiliser l’attribut onAction pour y spécifier le nom de la méthode que nous allons écrire juste après.

clip_image016

Nous allons écrire la méthode qui sera appelée lorsque l’utilisateur cliquera sur le bouton :

public void btBordeaux_Click(Office.IRibbonControl control)
{
    MessageBox.Show("Bordeaux sera champion de France");
}

Il vous faudra écrire cette méthode sans aucune assistance de la part de Visual Studio pour la signature de celle-ci, attention donc à ne pas faire d’erreur.

Tags:

Microsoft Office | Tutoriaux .NET

A propos de l'auteur

Fabien Lavocat

Lavocat Fabien
Ingénieur Multimédia - TMM Communication



"Blog-Microsoft.fr is an independent blog and is not affiliated with, nor has it been authorized, sponsored, or otherwise approved by Microsoft Corporation."

Contactez-moi Send mail

MVP
Microsoft Most Valuable Professional
Client Application Development