2010-11-29 7 views
0

私のAccess(2007)アプリケーションは、特定のExcel(2007)ブックの異なるワークシートの情報を読みたいと思っています。インターネット上では、DAO/ADO/Excel Object Model/VBAを使用してこれを行う例がたくさんありますが、どの方法が最も紛らわしいかと思います。AccessからExcelワークブックを読む

今、私はそれをこのようにやっている:(ワークシートを通じて例のIループとして、その名前を印刷)

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 

これは、これを行うための正しい方法は何ですか?そしてこれは最も効率的な方法ですか? (「最も効率的な方法」がある場合)

+0

ワークシートを読んだら、何をしたいですか?それはそれを行う方法の選択を制限する傾向があります。 –

+0

David、返事を読む機会を得られませんでしたか? – Fionnuala

答えて

1

あなたがしたいことは、あなたがしたいことに非常に依存します。 Excelのデータが構造化されていて、インポートまたは操作したい場合は、INキーワードを使用してクエリーを使用するか、Excelの範囲、範囲、または完全なワークシートをリンクする方が簡単です。 VBA
http://msdn.microsoft.com/en-us/library/aa141565(office.10).aspx

ワークシートの完全なリストを取得することが可能であるとビア

リンクADoスキーマの名前付き範囲。

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

あなたが希望する場合ExcelからAccess経由でSQL Serverを更新すると、ADOが良い選択になるかもしれません。

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

オートメーション、あなたの質問に示されているように、通常は、単一のセルと小さな範囲の書式設定や更新をたくさんする場合にのみ便利です。

+0

包括的な答えをありがとう。私の場合は、ワークシートの特定の範囲を読み、このデータを処理したいと考えています。私は同じ種類のデータを持つきちんとした列と行を持っていません。それ以外の場合は、DoCmd.TransferSpreadsheet – waanders

関連する問題