• ベストアンサー

AccessからExcelファイルのデータ取得

Access2000かExcelファイルのデータを取得したいのですが、 Excelファイルを一度 CSVファイルに変換し、その後Accessのテーブルへデータ取り込み といった手順をとりたいのです。 この方法って、どうコーディングすればいいのですか? (Accessのインポート処理は使用しない方法です)

質問者が選んだベストアンサー

  • ベストアンサー
  • puzou
  • ベストアンサー率35% (102/284)
回答No.1

VBAの基本的なことはご存知ですか? でしたら、 1.Accessで対象のExcelファイルを選択 2.AccessからExcelを制御してCSVにコンバート 3.出来たCSVファイルをAccessに取り込む(テキスト取り込み インポート定義を使うと簡単) この順序で行えばOKです。 ExcelでVBAを書くことで制御する方法もありますが、 Access側からExcelを制御する方がやりやすいと思います。

nyanaaaa
質問者

補足

AccessからExcelファイルを選択することは出来ました! > 2.AccessからExcelを制御してCSVにコンバート この方法はAccessから制御してしまえば良いわけですね? Excelファイルを複数指定した場合は、取込処理を複数回行えばいけそうですね。

その他の回答 (4)

  • chiharuK
  • ベストアンサー率0% (0/1)
回答No.5

VBAでの制御になりますが、 Excelをインポートするには、「TransferSpreadsheet」使って、インポートできます。 (Excelをそのままインポート) Excelの項目(セル)に該当するテーブルを作成しておき、そのテーブルへ直接インポートすることができます。 --- DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "インポート先のテーブル名", "Excelへの絶対パス", , "シート名" --- ※シート名は、指定しなければ1シート目がインポートされます。 もしシートが複数あるのなら、ADOか、DAO等でExcelに接続して、「TableDefs(0).Name」で、シート名も取得できます。 ---  '■Excelデータベースへ接続 Dim xDB As Database Set xDB = OpenDatabase("Excelへの絶対パス", False, True, "Excel 8.0;") '■1シート目の名称取得 Dim F_Name As String F_Name = xDB.TableDefs(0).Name '(先頭に[']文字、最後に[$']文字が付くので省く) F_Name = Mid(F_Name, 2, (Len(F_Name) - 3)) --- TableDefs(1)にすれば、2シート目のシート名を取得できます。 NO4の方が言われている通り、ADOで直接接続すれば、わざわざインポートする必要はないです。 でも、ADOを使ってない人には、難しいですよね。 あ、別にCSV変換する手法が悪い!と言っているのではないです。 Office製品同士で、互換性?があるのに、使わないなんて勿体無いかな…と思って。

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.4

#2さんのように、私も、CSV変換は感心しませんね。Excelのブックからデータを直接取る時は、以下のようにADO を使えば簡単にデータを取れます。複数のExcelのブックがあっても、ファイル名を変えれば済みます。Excelは、データベースフォーマットとして、使用できるからです。 例: Sub Test_ExcelConnect() Dim cnADO As New ADODB.Connection mySource = "C:\TEST1.xls" 'Excelブック名 With cnADO   .Provider = "Microsoft.Jet.OLEDB.4.0"   .ConnectionString = "Data Source=" & mySource & ";" & _    "Extended Properties=Excel 8.0;"   .Open End With 後は、Recordset で、フィールドを調べて、取り出していけばよいと思います。 VBAに慣れていなければ、ADOで検索してみてください。基本パターンは決まっていますから。

  • puzou
  • ベストアンサー率35% (102/284)
回答No.3

No1です。 >AccessからExcelファイルを選択することは出来ました! ===== 良かったです! >> 2.AccessからExcelを制御してCSVにコンバート >この方法はAccessから制御してしまえば良いわけですね? >Excelファイルを複数指定した場合は、取込処理を複数回行えばいけそうですね。 ===== その通りです。Accessから制御しちゃってください。 もしVBAのコードがわかりづらかったら、 Excelでキーボードマクロを保存して、それをExcelのVBAとして出力、 そのコードを参考にAccess側でコーディング、 という手順が楽ですョ。 ファイル名を配列に格納して、その数だけループさせれば複数ファイルも可能ですし、 シート数の取得が可能ですから取りこむシートが1ファイルに複数あってもOKです。 CSVまで出来ちゃえば後は、インポート定義を使用してテキストインポートで終了です。 もし細かいところが解らなかったら前後のソースを補足として入れてみてください。 頑張ってくださいネ!

  • chiharuK
  • ベストアンサー率0% (0/1)
回答No.2

Accessから、Excelのデータを取得したい場合、EXCELをCSVに変換する必要はないと思いますよ。 『Accessのインポート処理は使用しない方法』とありますが、Accessのインポート機能(手動でインポートする)ことはしない…ってことでしょうか? 例えば、AccessとExcelならば、リンクできます。リンクすれば、テーブルとして使用できます。 (ただしExcelのファイル名等固定になります) もしくは、VBAで、ボタンを押したらExcel自動インポートって事もできますよ。 もう少し詳しいことが分かれば、明確な返答ができると思います☆

nyanaaaa
質問者

補足

取込処理を全て自動させたいのです。 (AccessよりExcelファイル選択→Accessのテーブルデータ) この際、取り込むExcelは複数を選択させたいです。

関連するQ&A