Comment faire pour automatiser Microsoft Excel à partir de Visual Basic .NET

Traductions disponibles Traductions disponibles
Numéro d'article: 301982 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Résumé

Cet article explique comment créer une Automation client pour Microsoft Excel à l'aide de Microsoft Visual Basic .NET.

Plus d'informations

Automation est un processus qui permet aux applications écrites dans des langages tels que Visual Basic de contrôler d'autres applications par programme. Automation vers Excel permet d'effectuer des actions telles que création d'un nouveau classeur, ajout de données du classeur ou créer des graphiques. Avec Excel et autres applications Microsoft Office, pratiquement toutes les actions que vous pouvez effectuer manuellement par le biais de l'interface utilisateur peuvent également être effectuée par programmation à l'aide d'Automation.

Excel fournit cette fonctionnalité de programmation par le biais d'un modèle d'objet. Le modèle objet est une collection de classes et méthodes qui correspondent aux composants logiques d'Excel. Par exemple, il est un objet Application , un objet Workbook et un objet Worksheet , chacune d'entre elles contiennent les fonctionnalités de ces composants de Microsoft Excel. Pour accéder au modèle d'objet à partir de Visual Basic .NET, vous pouvez définir une référence de projet à la bibliothèque de type.

Cet article explique comment définir la référence de projet appropriée à la bibliothèque de type Excel pour Visual Basic .NET et fournit un exemple de code pour automatiser Excel.

Créer un client automation pour Microsoft Excel

  1. Démarrez Microsoft Visual Studio .NET.
  2. Dans le menu Fichier , cliquez sur Nouveau , puis cliquez sur le projet . Sélectionnez application Windows dans les types de projet Visual Basic. Form1 est créé par défaut.
  3. Ajouter une référence à Microsoft Excel objet bibliothèque . Pour ce faire, procédez comme suit :
    1. Dans le menu projet , cliquez sur Ajouter référence .
    2. Sous l'onglet COM , trouver la bibliothèque d'objet Microsoft Excel , puis cliquez sur Sélectionner .

      note Microsoft Office 2003 inclut les assemblys Primary Interop (Assemblies). Microsoft Office XP n'inclut pas assemblys PIA, mais ils peuvent être téléchargés. Pour plus d'informations sur les assemblys PIA Office XP, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
      328912 Assemblys interop primaires (assembly) Microsoft Office XP sont disponibles au téléchargement
    3. Cliquez sur OK dans la ajouter références boîte de dialogue pour accepter vos sélections.
  4. Dans le menu Affichage , sélectionnez boîte à outils pour afficher la boîte à outils et puis ajouter un bouton à Form1.
  5. Double-cliquez sur Button1 . La fenêtre de code pour le formulaire s'affiche.
  6. Dans la fenêtre de code, recherchez le code suivant :
        Private Sub Button1_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles Button1.Click
    
        End Sub
    					
    remplacer le code précédent par le code suivant :
        Private Sub Button1_Click(ByVal sender As System.Object, _
          ByVal e As System.EventArgs) Handles Button1.Click
            Dim oXL As Excel.Application
            Dim oWB As Excel.Workbook
            Dim oSheet As Excel.Worksheet
            Dim oRng As Excel.Range
    
            ' Start Excel and get Application object.
            oXL = CreateObject("Excel.Application")
            oXL.Visible = True
    
            ' Get a new workbook.
            oWB = oXL.Workbooks.Add
            oSheet = oWB.ActiveSheet
    
            ' Add table headers going cell by cell.
            oSheet.Cells(1, 1).Value = "First Name"
            oSheet.Cells(1, 2).Value = "Last Name"
            oSheet.Cells(1, 3).Value = "Full Name"
            oSheet.Cells(1, 4).Value = "Salary"
    
            ' Format A1:D1 as bold, vertical alignment = center.
            With oSheet.Range("A1", "D1")
                .Font.Bold = True
                .VerticalAlignment = Excel.XlVAlign.xlVAlignCenter
            End With
    
            ' Create an array to set multiple values at once.
            Dim saNames(5, 2) As String
            saNames(0, 0) = "John"
            saNames(0, 1) = "Smith"
            saNames(1, 0) = "Tom"
            saNames(1, 1) = "Brown"
            saNames(2, 0) = "Sue"
            saNames(2, 1) = "Thomas"
            saNames(3, 0) = "Jane"
    
            saNames(3, 1) = "Jones"
            saNames(4, 0) = "Adam"
            saNames(4, 1) = "Johnson"
    
            ' Fill A2:B6 with an array of values (First and Last Names).
            oSheet.Range("A2", "B6").Value = saNames
    
            ' Fill C2:C6 with a relative formula (=A2 & " " & B2).
            oRng = oSheet.Range("C2", "C6")
            oRng.Formula = "=A2 & "" "" & B2"
    
            ' Fill D2:D6 with a formula(=RAND()*100000) and apply format.
            oRng = oSheet.Range("D2", "D6")
            oRng.Formula = "=RAND()*100000"
            oRng.NumberFormat = "$0.00"
    
            ' AutoFit columns A:D.
            oRng = oSheet.Range("A1", "D1")
            oRng.EntireColumn.AutoFit()
    
            ' Manipulate a variable number of columns for Quarterly Sales Data.
            Call DisplayQuarterlySales(oSheet)
    
            ' Make sure Excel is visible and give the user control
            ' of Excel's lifetime.
            oXL.Visible = True
            oXL.UserControl = True
    
            ' Make sure that you release object references.
            oRng = Nothing
            oSheet = Nothing
            oWB = Nothing
            oXL.Quit()
            oXL = Nothing
    
            Exit Sub
    Err_Handler:
            MsgBox(Err.Description, vbCritical, "Error: " & Err.Number)
        End Sub
    
        Private Sub DisplayQuarterlySales(ByVal oWS As Excel.Worksheet)
            Dim oResizeRange As Excel.Range
            Dim oChart As Excel.Chart
            Dim oSeries As Excel.Series
            Dim iNumQtrs As Integer
            Dim sMsg As String
            Dim iRet As Integer
    
    
            ' Determine how many quarters to display data for.
            For iNumQtrs = 4 To 2 Step -1
                sMsg = "Enter sales data for" & Str(iNumQtrs) & " quarter(s)?"
                iRet = MsgBox(sMsg, vbYesNo Or vbQuestion _
                   Or vbMsgBoxSetForeground, "Quarterly Sales")
                If iRet = vbYes Then Exit For
            Next iNumQtrs
    
            ' Starting at E1, fill headers for the number of columns selected.
            oResizeRange = oWS.Range("E1", "E1").Resize(ColumnSize:=iNumQtrs)
            oResizeRange.Formula = "=""Q"" & COLUMN()-4 & CHAR(10) & ""Sales"""
    
            ' Change the Orientation and WrapText properties for the headers.
            oResizeRange.Orientation = 38
            oResizeRange.WrapText = True
    
            ' Fill the interior color of the headers.
            oResizeRange.Interior.ColorIndex = 36
    
            ' Fill the columns with a formula and apply a number format.
            oResizeRange = oWS.Range("E2", "E6").Resize(ColumnSize:=iNumQtrs)
            oResizeRange.Formula = "=RAND()*100"
            oResizeRange.NumberFormat = "$0.00"
    
            ' Apply borders to the Sales data and headers.
            oResizeRange = oWS.Range("E1", "E6").Resize(ColumnSize:=iNumQtrs)
            oResizeRange.Borders.Weight = Excel.XlBorderWeight.xlThin
    
            ' Add a Totals formula for the sales data and apply a border.
            oResizeRange = oWS.Range("E8", "E8").Resize(ColumnSize:=iNumQtrs)
            oResizeRange.Formula = "=SUM(E2:E6)"
            With oResizeRange.Borders(Excel.XlBordersIndex.xlEdgeBottom)
                .LineStyle = Excel.XlLineStyle.xlDouble
                .Weight = Excel.XlBorderWeight.xlThick
            End With
    
            ' Add a Chart for the selected data.
            oResizeRange = oWS.Range("E2:E6").Resize(ColumnSize:=iNumQtrs)
            oChart = oWS.Parent.Charts.Add
            With oChart
                .ChartWizard(oResizeRange, Excel.XlChartType.xl3DColumn, , Excel.XlRowCol.xlColumns)
                oSeries = .SeriesCollection(1)
                oSeries.XValues = oWS.Range("A2", "A6")
                For iRet = 1 To iNumQtrs
                    .SeriesCollection(iRet).Name = "=""Q" & Str(iRet) & """"
                Next iRet
                .Location(Excel.XlChartLocation.xlLocationAsObject, oWS.Name)
            End With
    
            ' Move the chart so as not to cover your data.
            With oWS.Shapes.Item("Chart 1")
                .Top = oWS.Rows(10).Top
                .Left = oWS.Columns(2).Left
            End With
    
            ' Free any references.
            oChart = Nothing
            oResizeRange = Nothing
        End Sub
    					
  7. Ajoutez le code suivant au début de Form1.vb :
    Imports Microsoft.Office.Core
    					

Tester le client automation

  1. Appuyez sur F5 pour générer et exécuter le programme.
  2. Dans l'écran, cliquez sur Button1 . Le programme lance Excel et remplit les données dans une nouvelle feuille de calcul.
  3. Lorsque vous êtes invité entrer des données ventes trimestrielles, cliquez sur Oui . Un graphique lié à des données trimestrielles est ajouté à la feuille de calcul.

Références

Pour plus d'informations, reportez-vous au site de Web) MSDN (Microsoft Developer Network suivant :
Développement de Microsoft Office avec Visual Studio
http://msdn2.microsoft.com/en-us/library/aa188489(office.10).aspx
Pour plus d'informations Excel et Visual Basic, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft :
219151 Comment faire pour automatiser Microsoft Excel à partir de Visual Basic

Propriétés

Numéro d'article: 301982 - Dernière mise à jour: jeudi 29 mars 2007 - Version: 8.3
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002
Mots-clés : 
kbmt kbpia kbautomation kbhowto KB301982 KbMtfr
Traduction automatique
IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d?articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d?avoir accès, dans votre propre langue, à l?ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s?exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s?efforce aussi continuellement de faire évoluer son système de traduction automatique.
La version anglaise de cet article est la suivante: 301982
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com