2010-05-25 5 views
4

Quelle est la «meilleure» manière de lire (lire) un fichier Excel à partir d'une application Access 2007? Je veux seulement faire une boucle dans les lignes et mettre les données dans une table Access.Meilleure façon de lire un fichier Excel dans une base de données Access

Je ne veux pas une importation manuelle (boîte de dialogue Obtenir des données externes) mais par VBA. L'utilisateur obtient un formulaire avec un bouton Parcourir, puis pointe vers un fichier Excel avec un contenu/format défini. Après cela, le code VBA lit les données et les place dans la base de données Access.

Répondre

7

Vous pouvez essayer la méthode DoCmd.TransferSpreadsheet.

DoCmd.TransferSpreadsheet acImport, , "from_excel","C:\Access\demo.xls", True 

que les importations de données de feuille de calcul dans une table nommée from_excel, et assume la première ligne de la feuille de calcul contient des noms de champ. Voir l'aide d'Access pour TransferSpreadsheet ou en ligne here, pour plus de détails.

3

Si vous souhaitez lire la totalité de la feuille de calcul, vous pouvez importer une feuille de calcul Excel directement dans Access. Voir here ou here.

Vous pouvez également choisir de lier à la feuille de calcul Excel au lieu de l'importer. De cette façon, toutes les modifications apportées à la feuille de calcul Excel seront reflétées dans la table liée. Cependant, vous ne pourrez pas effectuer de modifications depuis Access.

Une troisième option consiste à écrire du code VBA dans Access pour ouvrir un jeu d'enregistrements et lire la feuille de calcul. Voir les réponses de KeithG dans this thread. Vous pouvez faire quelque chose comme ça pour ouvrir la feuille de calcul dans VBA:

Dim xl As Excel.Application 
Dim xlsht As Excel.Worksheet 
Dim xlWrkBk As Excel.Workbook 

Set xl = CreateObject("Excel.Application") 
Set xlWrkBk = GetObject("H:/ggg.xls") 
Set xlsht = xlWrkBk.Worksheets(1) 
+0

Merci, excellents tuts, mais je voulais dire une option par VBA. J'ai étendu la question, voir ci-dessus – waanders

+0

Voir mon post édité pour quelques informations sur la façon d'accéder à la feuille de calcul via VBA. – TLiebe

+0

Vous pouvez exécuter l'importation dans VBA avec DoCmd.TransferSpreadsheet. Cette réponse semble très incomplète sans une mention de cela, me semble-t-il. –

0

Essayez quelque chose comme ceci:

Dim excelApp As Excel.Application 
Dim workbook As Excel.Workbook 
Dim worksheet As Excel.Worksheet 

Set excelApp = CreateObject("Excel.application") 
Set workbook = excelApp.Open("C:\someFileName.xls") 
Set worksheet = workbook.Worksheets(1) 

Et puis une boucle sur les lignes et les colonnes, extraire les données à partir des cellules, et l'insert dans la base de données. (Vous pouvez utiliser la méthode worksheet.cells.) Essayez de rechercher sur Google des échantillons de code.

+0

Alors, comment faites-vous une boucle à travers les lignes et les colonnes? Je veux importer un xlsx dans une table, mais comme les colonnes ne correspondent pas nécessairement à celles de la table, j'ai besoin de faire manuellement une redirection. – Hill

Questions connexes