Comment faire pour importer des données à partir de Microsoft SQL Server dans Microsoft Excel

Résumé

Ce guide pas à pas explique comment importer des données dans Microsoft Excel à partir de la base de données Pubs, une base de données exemple qui est inclus avec Microsoft SQL Server.

Objets de données ActiveX (ADO) offrent un accès à n’importe quel type de source de données. Il s’agit d’un modèle objet plat avec quelques objets. Les objets principales dans le modèle d’objet ADO sont les suivantes :

   Object          Description
-----------------------------------------------------------------------
Connection Refers to the connection to the data source.
Recordset Refers to the data extracted.
Command Refers to a stored procedure or SQL statements that
need to be executed.

Bien qu’il existe de nombreuses façons pour renvoyer un jeu d’enregistrements à l’aide d’ADO, cet article se concentre sur la connexion et les objets de jeu d’enregistrements.

Configuration requise

Vous devez disposer d’un serveur local exécutant Microsoft SQL Server et qui contient la base de données Pubs.

Microsoft vous recommande de qu'avoir connaissance des éléments suivants :
  • Création de procédures dans les programmes Office Visual Basic pour Applications.
  • Utilisation des variables de type objet.
  • Utilisation des objets Excel.
  • Concepts de systèmes de gestion de base de données (SGBDR) relationnelle.
  • Langage SQL des instructions SELECT (SQL).

Référence à la bibliothèque d’objets ADO

  1. Démarrez Microsoft Excel. Ouvrez un nouveau classeur et enregistrez-le en tant que SQLExtract.xls.
  2. Démarrez l’éditeur Visual Basic, puis sélectionnez votre projet VBA.
  3. Dans le menu Outils , cliquez sur références.
  4. Cliquez pour sélectionner la version la plus récente de la case à cocher Bibliothèque Microsoft ActiveX Data Objects .

Création de la connexion

  1. Insérez un nouveau module dans le projet.
  2. Créez une nouvelle procédure Sub, appelée DataExtract.
  3. Tapez ou collez le code suivant :
    ' Create a connection object.Dim cnPubs As ADODB.Connection
    Set cnPubs = New ADODB.Connection

    ' Provide the connection string.
    Dim strConn As String

    'Use the SQL Server OLE DB Provider.
    strConn = "PROVIDER=SQLOLEDB;"

    'Connect to the Pubs database on the local server.
    strConn = strConn & "DATA SOURCE=(local);INITIAL CATALOG=pubs;"

    'Use an integrated login.
    strConn = strConn & " INTEGRATED SECURITY=sspi;"

    'Now open the connection.
    cnPubs.Open strConn

Extraction des données

Tapez ou collez le code suivant pour extraire vos enregistrements :
' Create a recordset object.Dim rsPubs As ADODB.Recordset
Set rsPubs = New ADODB.Recordset

With rsPubs
' Assign the Connection object.
.ActiveConnection = cnPubs
' Extract the required records.
.Open "SELECT * FROM Authors"
' Copy the records into cell A1 on Sheet1.
Sheet1.Range("A1").CopyFromRecordset rsPubs

' Tidy up
.Close
End With

cnPubs.Close
Set rsPubs = Nothing
Set cnPubs = Nothing

Vérifier que le code fonctionne

  1. Exécutez le code.
  2. Basculez vers Excel et observez la feuille Sheet1 dans le classeur pour afficher les données.

Résolution des problèmes

Si votre code se bloque et vous recevez une erreur d’exécution, votre serveur de base de données est en panne. Vous pouvez utiliser la propriété ConnectionTimeout pour contrôler le temps que nécessaire au renvoi d’une erreur d’exécution. Définir cette propriété à une valeur supérieure à zéro. Si vous affectez la valeur zéro, la connexion n’expirera jamais. La valeur par défaut est de 15 secondes.

Références

Vous trouverez des exemples de code supplémentaires en recherchant dans le site Web de Microsoft à l’adresse suivante :

Propriétés

ID d'article : 306125 - Dernière mise à jour : 27 janv. 2017 - Révision : 1

Microsoft Office Excel 2007, Microsoft Excel 2002

Commentaires