ExcelADO montre comment utiliser ADO pour lire et écrire des données dans des classeurs Excel

Traductions disponibles Traductions disponibles
Numéro d'article: 278973 - Voir les produits auxquels s'applique cet article
Cet article peut contenir des liens vers des informations en langue anglaise (pas encore traduites).
Agrandir tout | Réduire tout

Résumé

L'exemple ExcelADO.exe illustre comment vous pouvez utiliser des objets ADO (ActiveX Data Objects) avec le fournisseur Microsoft Jet OLE DB 4.0 pour lire et écrire des données dans les classeurs Microsoft Excel.

Plus d'informations

Vous pouvez télécharger le fichier suivant à partir du Centre de téléchargement Microsoft :
ExcelADO.exe
Date de publication : 12 décembre 2000

Pour plus d'informations sur la façon de télécharger des fichiers du Support technique Microsoft, cliquez sur le numéro ci-dessous pour afficher l'article correspondant dans la Base de connaissances Microsoft.
119591 Comment obtenir des fichiers de support technique Microsoft auprès des services en ligne
Microsoft a analysé ce fichier en vue de détecter la présence de virus. Microsoft a utilisé les logiciels de détection de virus les plus récents disponibles à la date de publication de ce fichier. Le fichier est conservé sur des serveurs sécurisés, empêchant toute modification non autorisée du fichier.

Pourquoi utiliser un objet ADO ?

L'utilisation d'un objet ADO pour transférer des données vers un classeur Excel ou récupérer des données à partir d'un classeur Excel présente, pour vous le développeur, plusieurs avantages par rapport à l'automation d'Excel :
  • Performances. Microsoft Excel est un serveur ActiveX out-of-process. Un objet ADO s'exécute in-process et permet d'éviter de coûteux appels out-of-process.
  • Évolutivité. Pour les applications Web, il n'est pas toujours souhaitable d'automatiser Microsoft Excel. Un objet ADO représente une solution plus évolutive pour gérer des données dans un classeur.
Les objets ADO peuvent être utilisés strictement pour transférer des données brutes vers un classeur. Vous ne pouvez pas utiliser des objets ADO pour appliquer des formats et des formules aux cellules. Toutefois, vous pouvez transférer des données vers un classeur préalablement mis en forme et le format est conservé. Si vous avez besoin d'une mise en forme "conditionnelle" après l'insertion des données, vous pouvez y procéder à l'aide de l'automatisation ou d'une macro dans le classeur.

Spécificités du fournisseur OLE DB pour Microsoft Jet relatives aux classeurs Excel

Le moteur de base de données Microsoft Jet peut être utilisé pour accéder aux données dans d'autres formats de fichier de base de données, tels que les classeurs Excel, par le biais de pilotes ISAM (Indexed Sequential Access Method) installables. Pour ouvrir des formats externes pris en charge par le fournisseur OLE DB pour Microsoft Jet 4.0, vous spécifiez le type de base de données dans les propriétés étendues pour la connexion. Le fournisseur OLE DB pour Microsoft Jet prend en charge les types de base de données suivants pour les classeurs Microsoft Excel :
  • Excel 3.0
  • Excel 4.0
  • Excel 5.0
  • Excel 8.0
REMARQUE : utilisez le type de base de données source Excel 5.0 pour les classeurs Microsoft Excel  5.0 et 7.0 (95) et utilisez le type de base de données source Excel 8.0 pour les classeurs Microsoft Excel 8.0 (97) et 9.0 (2000). L'échantillon ExcelADO.exe utilise les classeurs Excel aux formats Excel 97 et Excel 2000.

Les exemples suivants montrent une connexion ADO à un classeur Excel 97 (ou 2000) :
<![CDATA[
Dim oConn As New ADODB.Connection
With oConn
    .Provider = "Microsoft.Jet.OLEDB.4.0"
    .Properties("Extended Properties").Value = "Excel 8.0"
    .Open "C:\Book1.xls"
    '....
    .Close
End With
				]]>
     - ou -
<![CDATA[
Dim oConn As New ADODB.Connection
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
           "Data Source=C:\Book1.xls;" & _
           "Extended Properties=""Excel 8.0;"""
oConn.Close
				]]>
Conventions d'affectation des noms de tableaux

Il existe plusieurs façons de référencer un tableau (ou une plage) d'un classeur Excel :
  • Utilisez le nom de feuille suivi d'un symbole dollar (par exemple, [Sheet1$] ou [Ma Feuille de calcul$]). Un tableau de classeur qui est référencé de cette manière se compose de la plage entière utilisée de la feuille de calcul.
    <![CDATA[
    oRS.Open "Select * from [Sheet1$]", oConn, adOpenStatic
    					]]>
  • Utilisez une plage avec un nom défini (par exemple, [Table1]).
    <![CDATA[
    oRS.Open "Select * from Table1", oConn, adOpenStatic
    					]]>
  • Utilisez une plage avec une adresse spécifique (par exemple, [Sheet1$A1:B10]).
    <![CDATA[
    oRS.Open "Select * from [Sheet1$A1:B10]", oConn, adOpenStatic
    					]]>
En-têtes de tableau

Avec les classeurs Excel, la première ligne d'une plage est considérée comme ligne d'en-tête (ou noms de champs) par défaut. Si la première plage ne contient pas d'en-tête, vous pouvez spécifier HDR=NO dans les propriétés étendues de votre chaîne de connexion. Si la première ligne ne contient pas d'en-tête, le fournisseur OLE DB nomme automatiquement les champs pour vous (où F1 représenterait le premier champ, F2 représenterait le deuxième champ, et ainsi de suite).

Types de données

À l'inverse d'une base de données traditionnelle, il n'existe aucune façon directe de spécifier les types de données pour les colonnes des tableaux Excel. Au lieu de cela, le fournisseur OLE DB analyse un nombre limité de lignes d'une colonne pour "deviner" le type de données pour le champ. Le nombre de lignes à analyser prend par défaut la valeur de huit (8) lignes ; vous pouvez modifier ce nombre en spécifiant une valeur entre un (1) et seize (16) pour le paramètre MAXSCANROWS dans les propriétés étendues de votre chaîne de connexion.

Fichiers inclus avec l'exemple

Le fichier ExcelADO.exe contient un projet EXE standard Visual Basic, des pages ASP (Active Server Pages), des classeurs Excel 97 et Excel 2000 qui servent de modèles et une base de données Microsoft Access 2000. Les fichiers inclus sont les suivants :

Fichiers de projet EXE standard Visual Basic
  • ExcelADO.vbp
  • Form1.frm
  • Form1.frx
Pages ASP (Active Server Pages)
  • EmpData.asp
  • Orders.asp
Classeurs Microsoft Excel
  • OrdersTemplate.xls
  • EmpDataTemplate.xls
  • ProductsTemplate.xls
  • SourceData.xls
Base de données Microsoft Access
  • Data.mdb

Utilisation de l'exemple

Extrayez le contenu du fichier .exe dans un dossier.

Pour utiliser le projet Visual Basic, procédez comme suit :
  1. Dans Visual Basic, ouvrez le fichier ExcelADO.vbp.
  2. Dans le menu Projet, sélectionnez Références, puis définissez les références sur Microsoft ADO Ext. for DDL and Security et Microsoft ActiveX Data Objects Library. Cet exemple de code fonctionne avec ADO 2.5 et ADO 2.6 ; par conséquent, sélectionnez la version appropriée pour votre ordinateur.
  3. Appuyez sur la touche F5 pour exécuter le programme. Un formulaire s'affiche pour la démonstration.
  4. Cliquez sur Exemple 1. Cet exemple crée une copie du fichier OrdersTemplate.xls. Il utilise ensuite ADO pour se connecter au classeur et ouvre un Jeu d'enregistrements sur un tableau qui est une plage définie du classeur. Le nom de la plage est Orders_Table. Il utilise les méthodes AddNew/Update ADO pour ajouter des enregistrements (ou lignes) à la plage définie du classeur. Lorsque les ajouts de lignes sont terminés, la Connexion ADO est fermée et le classeur est affiché dans Microsoft Excel. Pour cela, procédez comme suit :
    1. Dans le menu Insertion d'Excel, sélectionnez Noms, puis sélectionnez Définir.
    2. Dans la liste de noms définis, sélectionnez Orders_Table. Notez que le nom défini s'est développé pour inclure les enregistrements récemment ajoutés. Le nom défini est utilisé, conjointement à la fonction OFFSET d'Excel, pour calculer un total des données ajoutées à la feuille de calcul.
    3. Quittez Microsoft Excel et revenez à l'application Visual Basic.
  5. Cliquez sur Exemple 2. Cet exemple crée une copie du fichier EmpDataTemplate.xls. Il utilise ADO pour se connecter au classeur et utilise la méthode Execute de la connexion ADO pour insérer des données (INSERT INTO dans SQL) dans le classeur. Les données sont ajoutées au niveau de plages définies (ou tableaux) du classeur. Lorsque les données sont transférées, la connexion est fermée et le classeur qui en résulte est affiché dans Excel. Après avoir examiné le classeur, quittez Microsoft Excel, puis revenez à l'application Visual Basic.

  6. Cliquez sur Exemple 3. Cet exemple crée une copie du fichier ProductsTemplate.xls. Il utilise la bibliothèque d'objets Microsoft ADO Extensions for DDL and Security (ADOX) version 2.1 pour ajouter un nouveau tableau (ou une nouvelle feuille de calcul) au classeur. Un Jeu d'enregistrements ADO est ensuite obtenu pour le nouveau tableau et les données sont ajoutées à l'aide des méthodes AddNew/Update. Lorsque les ajouts de lignes sont terminés, la Connexion ADO est fermée et le classeur est affiché dans Excel. Le classeur contient le code de macro Visual Basic pour Applications (VBA) dans l'événement Open pour le classeur. La macro s'exécute lorsque le classeur s'ouvre ; si la nouvelle feuille de calcul "Products" existe dans le classeur, le code de macro met en forme la feuille de calcul, puis le code de macro est supprimé. Cette technique présente une façon pour le développeur Web de déplacer le code de mise en forme du serveur Web vers le client. Une application Web pourrait transmettre en continu un classeur mis en forme qui contient des données au client et autoriser le code de macro qui exécuterait toute mise en forme "conditionnelle" qui ne serait peut-être pas possible dans un modèle seul à s'exécuter au niveau client.

    REMARQUE : pour examiner le code de macro, affichez le module ThisWorkbook dans le VBAProject pour ProductsTemplate.xls.

  7. Cliquez sur Exemple 4. Cet exemple produit les mêmes résultats que l'exemple 1, mais la technique utilisée pour transférer les données est légèrement différente. Dans l'exemple 1, les enregistrements (ou lignes) sont ajoutés l'un après l'autre à la feuille de calcul. L'exemple 4 ajoute les enregistrements en masse en joignant le tableau Excel à une base de données Access et en exécutant une requête Ajout (ou INSERT INTO..SELECT FROM) pour ajouter des enregistrements d'un tableau de la base de données Access à un tableau Excel. Une fois le transfert terminé, le tableau Excel est détaché de la base de données Access et le classeur qui en résulte est affiché dans Excel. Quittez Excel et revenez à l'application Visual Basic.

  8. Le dernier exemple illustre comment lire des données à partir d'un classeur Excel. Sélectionnez un tableau dans la liste déroulante, puis cliquez sur Exemple 5. La fenêtre Exécution affiche le contenu du tableau que vous avez sélectionné. Si vous sélectionnez une feuille de calcul entière ("Feuille1$" ou "Feuille2$") pour le tableau, la fenêtre Exécution affiche le contenu de la plage utilisée pour cette feuille de calcul. Notez que la plage utilisée ne commence pas nécessairement sur la ligne 1, colonne 1 de la feuille de calcul. La plage utilisée démarre au niveau de la cellule la plus en haut à gauche de la feuille de calcul qui contient des données.

    Si vous sélectionnez une adresse de plage spécifique ou une plage définie, la fenêtre Exécution affiche uniquement le contenu de cette plage de la feuille de calcul.
Pour utiliser les pages ASP (Active Server Pages), procédez comme suit :
  1. Créez un dossier nommé ExcelADO dans le répertoire de base de votre serveur Web. Notez que le chemin d'accès par défaut pour le répertoire de base est C:\InetPut\WWWRoot.
  2. Copiez les fichiers suivants dans le dossier que vous avez créé à l'étape précédente :
    • EmpData.asp
    • Orders.asp
    • Data.mdb
    • EmpDataTemplate.xls
    • OrdersTemplate.xls

  3. Les scripts ASP de cet exemple créent des copies des modèles de classeur à l'aide de la méthode Copy de FileSystemObject. Pour que la méthode Copy réussisse, le client qui accède au script doit avoir l'accès en écriture au dossier qui contient l'ASP.
  4. Naviguez jusqu'au fichier Orders.asp (http://VotreServeur/ExcelADO/Orders.ASP) et notez que le navigateur affiche un classeur Excel semblable à celui de l'exemple 1 de l'application Visual Basic.
  5. Naviguez jusqu'au fichier EmpData.asp (http://VotreServeur/ExcelADO/EmpData.asp) et notez que le navigateur affiche un classeur Excel semblable à celui de l'exemple 2 de l'application Visual Basic.
(c) Microsoft Corporation 2000, Tous droits réservés. Contribution de Lori B. Turner, Microsoft Corporation.

Références

Pour plus d'informations, cliquez sur les numéros ci-dessous pour afficher les articles correspondants dans la Base de connaissances Microsoft.
195951 COMMENT FAIRE : Interroger et mettre à jour des données Excel en utilisant ADO à partir d'ASP
194124 PROBLÈME : Valeurs Excel retournées comme NULL en utilisant DAO OpenRecordset
193998 COMMENT FAIRE : Lire et afficher des données binaires dans ASP
247412 INFO : Méthodes de transferts de données vers Excel à partir de Visual Basic
257819 COMMENT FAIRE : Utiliser ADO avec des données Excel à partir de Visual Basic ou de VBA

Propriétés

Numéro d'article: 278973 - Dernière mise à jour: jeudi 22 décembre 2005 - Version: 6.0
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • Microsoft Excel 2000 Standard
  • Microsoft ActiveX Data Objects 2.5
  • Microsoft ActiveX Data Objects 2.6
  • Microsoft Visual Basic 6.0 Édition professionnelle
  • Microsoft Visual Basic 6.0 Édition Entreprise
  • Microsoft Active Server Pages 4.0
Mots-clés : 
kbdownload kbdownload kbautomation kbfile kbprogramming KB278973
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