- ベストアンサー
エクセルVBAでアクセスにデータをインポートする方法
- エクセルのデータをアクセスにインポートしテーブルを作成するために、VBAを使用しています。
- 特定のExcelファイルから指定された範囲のデータをAccessテーブルにインポートする処理を行っています。
- エクセルファイルのパス、テーブル名、データ範囲などを指定し、データのインポートを実行します。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> varac = "T_TESTTABLE" > DoCmd.DeleteObject acTable, varac データベースに"T_TESTTABLE"は存在していますか?存在していなければ、削除できずにエラーとなります。 > varxls = "C:\Users\AC\Desktop\ACTEST\RAWDATA.xlsx > DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9,varac, varxls, True, strrange アクセスのバージョンとインポートするエクセルファイのバージョンは何でしょうか?"ACTEST\RAWDATA.xlsx"は、拡張子から推察するとエクセル2007以上のバージョンで作成されていると思われます。引数"acSpreadsheetTypeExcel9"は、エクセル2000形式のワークシートの種類を指定するために使用します。
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17069)
エクセル・アクセスではエクスポートとインポートという対立用語があります。 エクセル側では、 ・インポートに当たるのは、データー外部データの取り込みです ・エクスポートに当たるのはーー存在しない? アクセス側では ・インポート ・エクスポート とも操作、マクロやVBAやできます。 ーーー 質問はどちらの方でやるのか?自分の質問の文章をよく読んでください。揺れていて、判りにくい。 掲載コードでDoCmdを使っているところから、アクセスVBAらしい。 それなら質問の標題を変えるべきでしょう。 「アクセスVBA エクセルからインポート」という風に。標題だけの問題だと、侮る無かれ、後世までこの質問がGoogleなどで見られる恐れがあるのだ。 エクセルのバージョンも書いてなくて、acSpreadsheetTypeExcel9と、xlsxと矛盾しているようだ。 何かをそのままコピーしたためではないか? ーー アクセス側でエクセルファイルをインポートするなら、Googleででも「アクセス VBA インポート エクセル」で照会すれば 沢山(膨大な数の)記事が出る。 ーー セル範囲の指定は Private Sub test01() DoCmd.TransferSpreadsheet acImport, acSpreadsheetTypeExcel9, "01化", "01化.xls", True, "Sheet1!A1:D3" End Sub で出来た(2003まででのテストだが)
お礼
imogasi 様 ご回答いただき、ありがとうございます。 おっしゃるとおり、質問内容にあっているタイトルは「アクセスVBA エクセルからインポート」でした。 エラーがでてしまったのも引数"acSpreadsheetTypeExcel9"でした。 "12xml"へ修正したところ、うまく実行できました。 急ぎの要件でACCESSのVBAを使用しなくてはならず、自分のやりたいことをネット検索して コピペしてからコードをの内容をひもといていってたのですが、なかなかちゃんと理解できず エラーの原因がわかりませんでした。 支離滅裂な質問にご回答いただき、誠に感謝しております。 ありがとうございました。
お礼
tate san 様 早々のご回答をいただき、ありがとうございました。 おっしゃる通り、引数"acSpreadsheetTypeExcel12xml"へ変更し ファイル名の後に"!"をつけたところ、無事に実行されました。 imogasi 様のおっしゃる通り、タイトルと質問内容があっていなくわかりにくい 文章だったのにも関わらず、的確なご回答をいただき大変感謝しております。 ありがとうございました。