Lire en anglais

Partager via


Procédure pas-à-pas : programmation Office en Visual Basic

Visual Studio offre des fonctionnalités en Visual Basic qui améliorent la programmation Microsoft Office. Les fonctionnalités de Visual Basic incluent les propriétés implémentées automatiquement, les instructions dans les expressions lambda et les initialiseurs de collection. Vous pouvez incorporer des informations de type, qui permettent de déployer des assemblies interagissant avec les composants COM sans déployer les assemblies PIA (Primary Interop Assemblies) sur l’ordinateur de l’utilisateur. Pour plus d’informations, consultez Procédure pas à pas : incorporation de types provenant d’assemblys managés.

Cette procédure pas à pas illustre ces fonctionnalités dans le contexte de la programmation Office, mais beaucoup d’entre elles sont aussi utiles en programmation générale. Dans la procédure pas à pas, vous allez utiliser une application de complément Excel pour créer un classeur Excel. Vous créerez ensuite un document Word contenant un lien vers le classeur. Enfin, vous apprendrez à activer et désactiver la dépendance d’assembly PIA.

Prérequis

Pour effectuer cette procédure pas à pas, Microsoft Office Excel et Microsoft Office Word doivent être installés sur votre ordinateur.

Notes

Il est possible que pour certains des éléments de l'interface utilisateur de Visual Studio, votre ordinateur affiche des noms ou des emplacements différents de ceux indiqués dans les instructions suivantes. L'édition de Visual Studio dont vous disposez et les paramètres que vous utilisez déterminent ces éléments. Pour plus d’informations, consultez Personnalisation de l’IDE.

Configurer une application Complément Excel

  1. Démarrez Visual Studio.

  2. Dans le menu Fichier , pointez sur Nouveau, puis cliquez sur Projet.

  3. Dans le volet Modèles installés, développez Visual Basic, développez Office, puis cliquez sur l’année de version du produit Office.

  4. Dans le volet Modèles, cliquez sur Complément Excel <version>.

  5. Regardez en haut du volet Modèles pour vérifier que .NET Framework 4, ou version ultérieure, apparaît dans la zone Framework cible.

  6. Tapez un nom pour votre projet dans la zone Nom, si vous le souhaitez.

  7. Cliquez sur OK.

  8. Le nouveau projet s’affiche dans l’Explorateur de solutions.

Ajouter des références

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le nom de votre projet, puis cliquez sur Ajouter une référence. La boîte de dialogue Ajouter une référence s’affiche.

  2. Sous l’onglet Assemblys, sélectionnez Microsoft.Office.Interop.Excel, version <version>.0.0.0 (pour plus d’informations sur les numéros de version des produits Office, consultez Versions Microsoft),dans la liste Nom du composant, puis maintenez la touche CTRL enfoncée et sélectionnez Microsoft.Office.Interop.Word, version <version>.0.0.0. Si les assemblys n’apparaissent pas, vous devez vérifier qu’ils sont installés et s’affichent (consultez Guide pratique pour installer les assemblys PIA (Primary Interop Assembly) d’Office).

  3. Cliquez sur OK.

Ajouter les instructions Imports ou les directives using nécessaires

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le fichier ThisAddIn.vb ou ThisAddIn.cs, puis cliquez sur Afficher le code.

  2. Ajoutez les instructions Imports suivantes en haut du fichier de code, si elles ne sont pas déjà présentes.

    Imports Microsoft.Office.Interop
    

Créer une liste de comptes bancaires

  1. Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le nom de votre projet, cliquez sur Ajouter, puis sur Classe. Nommez la classe Account.vb. Cliquez sur Add.

  2. Remplacez la définition de la classe Account par le code suivant : Les définitions de classe utilisent les propriétés implémentées automatiquement. Pour plus d’informations, consultez Propriétés implémentées automatiquement.

    Public Class Account
        Property ID As Integer = -1
        Property Balance As Double
    End Class
    
  3. Pour créer une liste bankAccounts qui contient deux comptes, ajoutez le code suivant à la méthode ThisAddIn_Startup dans ThisAddIn.vb. Les déclarations de liste utilisent les initialiseurs de collection. Pour plus d’informations, consultez Initialiseurs de collection.

    Dim bankAccounts As New List(Of Account) From {
        New Account With {
                              .ID = 345,
                              .Balance = 541.27
                         },
        New Account With {
                              .ID = 123,
                              .Balance = -127.44
                         }
        }
    

Exporter des données vers Excel

  1. Dans le même fichier, ajoutez la méthode suivante à la classe ThisAddIn. La méthode configure un classeur Excel, vers lequel elle exporte les données.

    Sub DisplayInExcel(ByVal accounts As IEnumerable(Of Account),
                   ByVal DisplayAction As Action(Of Account, Excel.Range))
    
        With Me.Application
            ' Add a new Excel workbook.
            .Workbooks.Add()
            .Visible = True
            .Range("A1").Value = "ID"
            .Range("B1").Value = "Balance"
            .Range("A2").Select()
    
            For Each ac In accounts
                DisplayAction(ac, .ActiveCell)
                .ActiveCell.Offset(1, 0).Select()
            Next
    
            ' Copy the results to the Clipboard.
            .Range("A1:B3").Copy()
        End With
    End Sub
    
    • La méthode Add possède un paramètre facultatif pour spécifier un modèle particulier. Les paramètres facultatifs vous permettent d’omettre l’argument du paramètre, si vous souhaitez utiliser la valeur par défaut de ce dernier. Dans la mesure où aucun argument n'est envoyé dans l'exemple précédent, Add utilise le modèle par défaut et crée un classeur.

    • Les propriétés Range et Offset de l’objet Range utilisent la fonctionnalité des propriétés indexées. Les propriétés indexées vous permettent également d'utiliser la propriété Value de l'objet Range, ce qui rend superflue l'utilisation de la propriété Value2. La propriété Value est indexée, mais l'index est optionnel. Les arguments facultatifs et les propriétés indexées fonctionnent ensemble dans l’exemple suivant.

  2. À la fin de DisplayInExcel, ajoutez le code suivant pour ajuster les largeurs de colonne au contenu.

    ' Add the following two lines at the end of the With statement.
    .Columns(1).AutoFit()
    .Columns(2).AutoFit()
    

    Pour plus d'informations sur l'incorporation des types d'interopérabilité, consultez les procédures « Pour rechercher la référence d'assembly PIA » et « Pour restaurer la dépendance d'assembly PIA » plus loin dans cet article.

Appeler DisplayInExcel

  1. Ajoutez le code suivant à la fin de la méthode ThisAddIn_StartUp. L'appel à DisplayInExcel contient deux arguments. Le premier argument est le nom de la liste des comptes à traiter. Le deuxième argument est une expression lambda multiligne qui définit comment les données doivent être traitées. Les valeurs ID et balance de chaque compte s'affichent dans des cellules adjacentes et la ligne s'affiche en rouge si le solde est inférieur à zéro.

    DisplayInExcel(bankAccounts,
           Sub(account, cell)
               ' This multiline lambda expression sets custom
               ' processing rules for the bankAccounts.
               cell.Value = account.ID
               cell.Offset(0, 1).Value = account.Balance
    
               If account.Balance < 0 Then
                   cell.Interior.Color = RGB(255, 0, 0)
                   cell.Offset(0, 1).Interior.Color = RGB(255, 0, 0)
               End If
           End Sub)
    
  2. Pour exécuter le programme, appuyez sur F5. Une feuille de calcul Excel s'affiche avec les données des comptes.

Ajouter un document Word

  1. Ajoutez le code suivant à la fin de la méthode ThisAddIn_StartUp pour créer un document Word qui contient un lien vers le classeur Excel.

    Dim wordApp As New Word.Application
    wordApp.Visible = True
    wordApp.Documents.Add()
    wordApp.Selection.PasteSpecial(Link:=True, DisplayAsIcon:=True)
    

    La méthode PasteSpecial comporte sept paramètres, tous définis en tant que paramètres de référence facultatifs. Les arguments nommés et les arguments facultatifs vous permettent de désigner les paramètres auxquels vous souhaitez accéder par leur nom et d’envoyer des arguments à ces seuls paramètres. Dans cet exemple, les arguments sont envoyés pour indiquer qu’un lien vers le classeur dans le Presse-papiers doit être créé (paramètre Link) et que ce lien doit être affiché dans le document Word sous forme d’une icône (paramètre DisplayAsIcon).

Exécution de l'application

  1. Appuyez sur F5 pour exécuter l'application. Excel démarre et affiche un tableau qui contient les informations des deux comptes de bankAccounts. Puis, un document Word apparaît qui contient un lien vers le tableau Excel.

Nettoyer le projet terminé

  1. Dans Visual Studio, cliquez sur Nettoyer la solution dans le menu Générer. Sinon, le complément s'exécutera chaque fois que vous ouvrirez Excel sur votre ordinateur.

Rechercher la référence de PIA

  1. Exécutez de nouveau l’application, mais ne cliquez pas sur Nettoyer la solution.

  2. Sélectionnez le bouton Démarrer. Recherchez Microsoft Visual Studio <version> et ouvrez une invite de commandes développeur.

  3. Tapez ildasm dans la fenêtre Invite de commandes développeur pour Visual Studio, puis appuyez sur Entrée. La fenêtre IL DASM s'affiche.

  4. Dans le menu Fichier de la fenêtre IL DASM, sélectionnez Fichier>Ouvrir. Double-cliquez sur Visual Studio <version>, puis sur Projets. Ouvrez le dossier de votre projet et, dans le dossier bin/Debug, recherchez nom de votre projet.dll. Double-cliquez sur nom de votre projet.dll. Une nouvelle fenêtre affiche les attributs de votre projet, en plus des références à d'autres modules et assemblys. Remarquez que les espaces de noms Microsoft.Office.Interop.Excel et Microsoft.Office.Interop.Word sont inclus dans l'assembly. Par défaut, dans Visual Studio, le compilateur importe les types dont vous avez besoin à partir d’un assembly PIA référencé dans votre assembly.

    Pour plus d’informations, consultez Guide pratique pour afficher le contenu d’un assembly.

  5. Double-cliquez sur l’icône MANIFESTE. Une fenêtre affiche la liste des assemblys contenant les éléments référencés par le projet. Microsoft.Office.Interop.Excel et Microsoft.Office.Interop.Word ne sont pas inclus dans la liste. Étant donné que les types dont votre projet a besoin ont été importés dans votre assembly, les références à un assembly PIA ne sont pas requis. Le déploiement s'en trouve facilité. Les assemblys PIA ne doivent pas être présents sur l'ordinateur de l'utilisateur ; comme une application ne nécessite pas le déploiement d'une version spécifique d'un assembly PIA, les applications peuvent être conçues pour fonctionner avec plusieurs versions d'Office, sous réserve que les API nécessaires existent dans toutes les versions.

    Le déploiement d'assemblys PIA n'étant plus nécessaire, vous pouvez créer une application dans les scénarios avancés qui fonctionne avec plusieurs versions d'Office, y compris les versions antérieures. Cependant, cela ne fonctionne que si votre code n'utilise pas d'API qui ne sont pas disponibles dans la version d'Office que vous utilisez. Comme il n'est pas toujours évident de savoir si une API particulière était disponible dans une version antérieure, l'utilisation de versions antérieures d'Office n'est pas recommandée.

    Notes

    Jusqu'à Office 2003, Office ne publiait pas les assemblys PIA. Par conséquent, le seul moyen de générer un assembly d'interopérabilité pour Office 2002 ou versions antérieures consiste à importer la référence COM.

  6. Fermez la fenêtre de manifeste et la fenêtre d'assembly.

Restaurer la dépendance de PIA

  1. Dans l’Explorateur de solutions, cliquez sur le bouton Afficher tous les fichiers. Développez le dossier Références et sélectionnez Microsoft.Office.Interop.Excel. Appuyez sur F4 pour afficher la fenêtre Propriétés.
  2. Dans la fenêtre Propriétés, remplacez la valeur True de la propriété Incorporer les types d’interopérabilité par False.
  3. Répétez les étapes 1 et 2 de cette procédure pour Microsoft.Office.Interop.Word.
  4. Appuyez sur F5 pour vérifier que le projet continue de s'exécuter correctement.
  5. Répétez les étapes 1 à 3 de la procédure précédente pour ouvrir la fenêtre d'assembly. Notez que Microsoft.Office.Interop.Word et Microsoft.Office.Interop.Excel ne sont plus dans la liste des assemblys incorporés.
  6. Double-cliquez sur l’icône MANIFESTE et faites défiler la liste des assemblys référencés. Microsoft.Office.Interop.Word et Microsoft.Office.Interop.Excel figurent tous deux dans la liste. Comme l’application référence les assemblys PIA Excel et Word, et que la propriété Incorporer les types d’interopérabilité a la valeur False, les deux assemblys doivent exister sur l’ordinateur de l’utilisateur final.
  7. Dans Visual Studio, cliquez sur Nettoyer la solution dans le menu Générer pour nettoyer le projet achevé.

Voir aussi