2009-07-07 7 views
4

Comment procéder pour ouvrir une connexion ADO à une feuille de calcul Excel 2007? Je le fais afin d'importer les données dans Access 2007. Plutôt ennuyeux, les données doivent être fléchies et pré-traitées avant d'être importées, d'où la raison pour laquelle je veux ouvrir une connexion ADO pour le lire.Ouverture de la connexion ADO à la feuille de calcul Excel dans VBA

Répondre

6
Set oConn = CreateObject("ADODB.Connection") 
oConn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\MyExcel2007File.xlsx;Extended Properties=""Excel 12.0 Xml;HDR=YES"";" 
oConn.Open 

Notez que vous devez utiliser le ACE driver au lieu de JET. Voir aussi Connection strings for Excel 2007.

1

Si vous souhaitez exécuter l'importation plusieurs fois (c'est-à-dire un type de service de rapport quotidien), vous pouvez essayer une approche différente de celle d'ADO. J'ai fini par créer un module dans Access qui pré-traite les feuilles Excel (puisque la feuille qui est importée change tous les jours), puis définit la feuille comme la source d'une table liée. Ensuite, j'interroge la table liée avec un appel "INSERT INTO" DoCmd.RunSQL pour extraire les données d'Excel et dans la base de données.

Si vous le souhaitez, je peux aller plus dans les détails.

+0

Vous pouvez créer des tables liées et exécuter des instructions INSERT INTO à l'aide d'ADO. – onedaywhen

1
Set cnn = New ADODB.Connection 
    'cnn.ConnectionString = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & sFullFileName & ";Extended Properties = Excel 12.0 Macro; HDR=No;" 
    'cnn.ConnectionString = "provider=Microsoft.Jet.OLEDB.4.0; data source=" & sFullFileName & ";Extended Properties=Excel 8.0" 
    cnn.ConnectionString = "DRIVER={Microsoft Excel Driver (*.xls)};ReadOnly=1;DBQ=" & sFullFileName 
    cnn.Open 
Questions connexes