2010-11-29 6 views
0

Je souhaite que mon application Access (2007) lise les informations contenues dans les différentes feuilles de calcul d'un classeur Excel (2007) donné. Sur Internet, je vois beaucoup d'exemples en utilisant DAO/ADO/Excel Object Model/VBA et je pense que c'est plutôt déroutant de savoir quelle est la meilleure solution.Lecture d'un classeur Excel à partir d'Access

Maintenant, je le fais de cette façon:

Dim ExcelApp As Excel.Application 
Dim ExcelWorkbook As Excel.Workbook 
Dim ExcelWorkSheet As Excel.Worksheet 

Set ExcelApp = CreateObject("Excel.Application") 
Set ExcelWorkbook = ExcelApp.Workbooks.Open("C:\Temp\test.xls") 

For Each ExcelWorkSheet In ExcelWorkbook.Worksheets 
    MsgBox ExcelWorkSheet.Name 
Next 

ExcelWorkbook.Close (False) 
ExcelApp.Quit 
Set ExcelWorkbook = Nothing 
Set ExcelApp = Nothing 

(A titre d'exemple boucle I à travers les feuilles de calcul et imprimer leurs noms)

Est-ce la bonne façon de le faire? Et est-ce le moyen le plus efficace? (s'il y a un "moyen le plus efficace")

+0

Que voulez-vous faire avec la feuille de calcul une fois que vous l'avez lue? Cela tendra à restreindre les choix quant à la façon de le faire. –

+0

David, n'avez-vous pas eu l'occasion de lire ma réponse? – Fionnuala

Répondre

1

Ce qui dépend le mieux dépend de ce que vous voulez faire. Si les données dans Excel sont structurées et que vous souhaitez les importer ou les manipuler, il est généralement préférable d'utiliser une requête avec le mot-clé IN ou, plus simplement, de lier des plages nommées Excel, des plages ou des feuilles de calcul complètes.

Link via VBA
http://msdn.microsoft.com/en-us/library/aa141565(office.10).aspx

Il est possible d'obtenir une liste complète des feuilles de calcul et plages nommées avec des schémas ADo.

Recherche
http://stackoverflow.com/questions/2689087/where-in-query-with-two-recordsets-in-access-vba/2689151#2689151

Si vous souhaitez mise à jour dire, serveur SQL d'Excel via Access, ADO pourrait être un bon choix.

ADO
http://stackoverflow.com/questions/2086234/query-excel-worksheet-in-ms-access-vba-using-adodb-recordset/2086626#2086626

Automation, comme illustré dans votre question, n'est généralement utile que si vous souhaitez faire beaucoup de mise en forme et/ou mise à jour de cellules individuelles et de petites plages.

+0

Merci pour votre réponse complète. Dans mon cas, je veux lire certaines plages des feuilles de calcul et traiter ces données. Je n'ai pas de colonnes et de lignes ordonnées avec le même type de données, sinon j'ai utilisé DoCmd.TransferSpreadsheet – waanders

Questions connexes