Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
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
Démarrez Visual Studio.
Dans le menu Fichier , pointez sur Nouveau, puis cliquez sur Projet.
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.
Dans le volet Modèles, cliquez sur Complément Excel <version>.
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.
Tapez un nom pour votre projet dans la zone Nom, si vous le souhaitez.
Cliquez sur OK.
Le nouveau projet s’affiche dans l’Explorateur de solutions.
Ajouter des références
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.
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).Cliquez sur OK.
Ajouter les instructions Imports ou les directives using nécessaires
Dans l’Explorateur de solutions, cliquez avec le bouton droit sur le fichier ThisAddIn.vb ou ThisAddIn.cs, puis cliquez sur Afficher le code.
Ajoutez les instructions
Importssuivantes 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
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.
Remplacez la définition de la classe
Accountpar 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 ClassPour créer une liste
bankAccountsqui contient deux comptes, ajoutez le code suivant à la méthodeThisAddIn_Startupdans 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
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 SubLa 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,
Addutilise le modèle par défaut et crée un classeur.Les propriétés
RangeetOffsetde 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éValuede l'objetRange, ce qui rend superflue l'utilisation de la propriétéValue2. La propriétéValueest indexée, mais l'index est optionnel. Les arguments facultatifs et les propriétés indexées fonctionnent ensemble dans l’exemple suivant.
À 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
Ajoutez le code suivant à la fin de la méthode
ThisAddIn_StartUp. L'appel àDisplayInExcelcontient 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 valeursIDetbalancede 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)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
Ajoutez le code suivant à la fin de la méthode
ThisAddIn_StartUppour 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ètreDisplayAsIcon).
Exécution de l'application
- 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é
- 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
Exécutez de nouveau l’application, mais ne cliquez pas sur Nettoyer la solution.
Sélectionnez le bouton Démarrer. Recherchez Microsoft Visual Studio <version> et ouvrez une invite de commandes développeur.
Tapez
ildasmdans la fenêtre Invite de commandes développeur pour Visual Studio, puis appuyez sur Entrée. La fenêtre IL DASM s'affiche.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.ExceletMicrosoft.Office.Interop.Wordsont 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.
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.ExceletMicrosoft.Office.Interop.Wordne 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.
Fermez la fenêtre de manifeste et la fenêtre d'assembly.
Restaurer la dépendance de PIA
- 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.
- Dans la fenêtre Propriétés, remplacez la valeur True de la propriété Incorporer les types d’interopérabilité par False.
- Répétez les étapes 1 et 2 de cette procédure pour
Microsoft.Office.Interop.Word. - Appuyez sur F5 pour vérifier que le projet continue de s'exécuter correctement.
- 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.WordetMicrosoft.Office.Interop.Excelne sont plus dans la liste des assemblys incorporés. - Double-cliquez sur l’icône MANIFESTE et faites défiler la liste des assemblys référencés.
Microsoft.Office.Interop.WordetMicrosoft.Office.Interop.Excelfigurent 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. - Dans Visual Studio, cliquez sur Nettoyer la solution dans le menu Générer pour nettoyer le projet achevé.
Voir aussi
- Propriétés implémentées automatiquement (Visual Basic)
- Initialiseurs de collection
- Paramètres facultatifs
- Passage des arguments par position et par nom
- Liaison anticipée et liaison tardive
- Expressions lambda
- Procédure pas à pas : incorporation de types provenant d’assemblys managés
- Procédure pas à pas : création de votre premier complément VSTO pour Excel
- COM Interop