- ベストアンサー
エクセルデータをアクセスに自動的に取り込める?
現在研究で、エクセルファイル200個ほどをアクセスにインポートしたいと考えております。 エクセルファイルは研究用のデータなので同じ形式のテーブルで入っている状態です。 フィールドなどが統一されています。 キーはファイル名となっており、それぞれのエクセルファイル名がIDとなっています。 このファイル200個程度をマクロなどを使い自動的にアクセスへ取り込みたいのですが参考書を読んでも方法がわかりません。よろしければ教えてください。宜しくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
#2です。 #2で(3)の(C)で言ったコード例は Sub test01() filename = Dir("*.xls", vbNormal) Do While filename <> "" MsgBox filename filename = Dir() Loop End Sub 参考は http://homepage2.nifty.com/kasayan/vba/dir.htm ほか、「dir() VBA 」でWEB照会してください。バリエーションの対処方法がたくさん出ます。
その他の回答 (2)
- imogasi
- ベストアンサー率27% (4737/17069)
勉強課題は3つあると思います。 アクセスにはVBAと違う「マクロ」というものがありますが、本件は、マクロでなく、アクセスVBAが必要でしょう。 200回の手作業で同じ作業を繰り返すなら、話は別ですが。 (1)エクセルー>アクセスインポートのコード (2)インポートしたアクセス側で200のファイル(テーブル)を 1つのテーブルにまとめるコード (3)200のエクセルファイル(ブック)を、連続で次々にコードで指定し、(1)のエクセルファイル名を順次変えて、(1)のコードを繰り返す方法。 (1)を1つのエクセルファイルにインポートするのは、細かいことは抜きにして,1行で終わりです。(私の環境で確認済み) Sub test11() DoCmd.TransferSpreadsheet acImport, 8, "BookA", "C:\Documents and Settings\XXXX\My Documents\BookA.xls", True, "" End Sub (2)は1つインポートしたごとに本体のアクセスのテーブル(上記例でBookA)にマージするか、200個一旦テーブルを作って 、一気にマージするかの2つの方法が考えられますが、ベターは前者かなと思います。 (3)は(A)エクセルファイル名を200個を、表で持つ (B)名前に規則性かある(Booknnnのnnnが連番とか) (C)同じフォルダーにインポート対象のエクセルファイルをだけを集める などの方法が考えられると思う。(c)が良いかとおもう。 プログラム構成として ーーー (3)(C)が一番外側での繰り返し (1)のブック名を変えてインポート(の繰り返し) (2)のインポートしたアクセステーブルを本体に融合(の繰り返し) まあしかし、アクセスの中級以上の問題でしょうね。 >参考書を読んでも (1)は載ってます。(3)の(C)はWEBにも似たような例があります。(2)はずばりは、ないかも知れない。(3)は探してみます。
お礼
大変親切かつ早急な書き込みありがとうございます。なるほど、自分がもっていなかった視点でしたので大変参考になります。学生ばかりかまわりにアクセスを使える人が意外にいなく困っていました。 早速やってみようと思います♪ ありがとうございます。
- violet430
- ベストアンサー率36% (27472/75001)
ACCESSマクロは組めますか? マクロを勉強してみて下さい。 マクロで処理可能です。
お礼
ご返信ありがとうございます。MYSQLなどは使えるのですが、マクロは全くの初心者です。もっと勉強してみたいと思います。
お礼
imogasi様ご丁寧にありがとうございます。 参考に勉強させていただきます!!