• ベストアンサー

エクセルデータをアクセスに自動的に取り込める?

現在研究で、エクセルファイル200個ほどをアクセスにインポートしたいと考えております。 エクセルファイルは研究用のデータなので同じ形式のテーブルで入っている状態です。 フィールドなどが統一されています。 キーはファイル名となっており、それぞれのエクセルファイル名がIDとなっています。 このファイル200個程度をマクロなどを使い自動的にアクセスへ取り込みたいのですが参考書を読んでも方法がわかりません。よろしければ教えてください。宜しくお願いいたします。

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

  • ベストアンサー
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.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照会してください。バリエーションの対処方法がたくさん出ます。

harsho
質問者

お礼

imogasi様ご丁寧にありがとうございます。 参考に勉強させていただきます!!

その他の回答 (2)

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.2

勉強課題は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)は探してみます。

harsho
質問者

お礼

大変親切かつ早急な書き込みありがとうございます。なるほど、自分がもっていなかった視点でしたので大変参考になります。学生ばかりかまわりにアクセスを使える人が意外にいなく困っていました。 早速やってみようと思います♪ ありがとうございます。

  • violet430
  • ベストアンサー率36% (27472/75001)
回答No.1

ACCESSマクロは組めますか? マクロを勉強してみて下さい。 マクロで処理可能です。

harsho
質問者

お礼

ご返信ありがとうございます。MYSQLなどは使えるのですが、マクロは全くの初心者です。もっと勉強してみたいと思います。

関連するQ&A

  • アクセスへの自動インポート

    エクセルデータをアクセスへインポートしているのですが ファイル数が多いため自動化を考えています。 ※決まったフォルダーへファイルを入れておいて メニューフォームから作業できるようにしたいと考えています ファイルはcsv形式です win98 アクセスは2000です 1.ファイルには全て見出しがついています。 (手動の場合は先頭行をフィールド名として使うにチェックを入れています) 2.ファイル名は常に同じ名前です 各ファイルを指定のテーブルにインポートしたいのですが どのようなマクロを組めばよろしいのでしょうか? (マクロを組まなければ出来ないですよね?) また、参考図書がありましたら出版社と本の名前を教えていただけると 助かります。 (本屋で立ち読みをしたのですが、見つけることが出来ませんでした。) お盆でお休みのところすみませんが、アクセス初心者のため、 ご教授願います。

  • Access2003 データ型 オートナンバーについて エクセルからテ

    Access2003 データ型 オートナンバーについて エクセルからテーブルをインポートする方法 主キーである、IDと名をつけたフィールドのデータ型は"オートナンバー"でレコード新規入力際、自動で番号がふられていくようにしています。 このテーブルにエクセルのレコードをインポートして追加したいのですが、インポートできません。 ※オートナンバーフィールドが原因と思われます。 どうすれば、エクセルからこのテーブルにレコードをインポートし、追加されたレコードにオートナンバーで番号を割り振る事が出来ますででしょうか? 最も、シンプルな方法をお教え願います。

  • アクセス エクセルのデータインポート

    アクセス超初心者です。現在2003を使用してエクセルからデータをインポートしようとしていますが、エラー回避のため、エクセルのフィールド名とアクセスのフィールド名は同じにするとテキストにありますした。アクセスのフィールドに主キーを設定するためNOフィールドがあります。コレはエクセルにはないフィールドなのですが、データインポート時にエラーになりませんでした。初心者なのでどうして??という疑問がわきます。どうしてなのでしょうか?主キー設定のフィールドは無視されるのですか?よろしくお願いします。

  • エクセルからアクセスへのインポートについて

    エクセルにある複数のファイルをアクセスへインポートしようとしています。エクセルには数百のシートが存在し、アクセス上で個々のテーブルにインポートしたいと考えています。一つ一つやればいいのですが、マクロなどを使って、自動的にインポートする方法はないのでしょうか?何卒よろしくお願いいたします。

  • Excelインポート時に見出しの並びが変わる

    お世話になります。 Excel2010 Access2010 Win7Pro ExcelをAccessにインポートすると、見出し(フィールド名)の並びが 変わってしまいます。例えば、  メーカー 型番 品名 数量 ・・・ という見出しのExcelをインポートし、インポート後テーブルを見てみると  ID メーカー 品名 型番 数量 ・・・ というような感じです。 ※ウィザードにて「主キーを自動的に設定する」を選択したので、テーブル  にはIDがあります。 <試したこと>  ・ExcelのA列にIDを予め足して、連番をふった状態でインポートし、そのIDを   主キーとした場合は、並びは変わりませんでした。  ・見出し名1~10(=10列)のExcelを作成し、インポートして主キーを自動設定   したところ、1、2、3、4、5、6、7、10、8、9 というように並びが変わりました。  ・同様に見出し名1~9(=9列)のExcelを作成し、インポートして主キーを自動設定   したところ、1~9並びは変わらずインポートできました。 ということは、インポートウィザードで主キーを自動的に設定した場合は 並びが変わる。但し、フィールド数によっては変わらない場合もある・・・ ということになるかと思いますが、こういう仕様なのでしょうか。 ご教示の程、宜しくお願い致します。

  • ACCESS2000でExcelから特定フィールドをインポートしたい

    ACCESS2000でExcelから特定のフィールドをインポートしたいのですが、 うまくいきません。 Excelはフィールド数が254フィールドもあり、 テーブルにインポートしたいフィールド数は30フィールドです。 Excelでは特定フィールドをインポートすることができないようなので、 一時テーブルに全てのフィールドをインポート後 必要なフィールドだけ取り出そうとやってみたのですが、 以下のコードを実行すると、13のフィールドが「解析不能なフィールド」と インポートエラーが出てしまいます。 DoCmd.TransferSpreadsheet acImport, 8, "TEMPテーブル", "c:\data.xls" また、Excelファイルをcsv形式に変換して、インポート定義を作る方法も やってみたのですが、インポート定義作成時に 「フィールド'ID'はインポートまたはエクスポートしようとしている テーブルまたクエリに存在しません」 というエラーが出てしまいます。 どうしたらインポートできるでしょうか。よろしくお願いします。

  • エクセルのデータをアクセスのテーブルにインポート

    エクセルのデータをアクセスのテーブルにインポートしたくて、 アクセスから外部データのインポートでエクセルを指定してるのですが ************************************************************************ ワークシート インポートウィザード インデックス、主キー、またはリレーションシップで重複する値が生成されてるため、 テーブルを変更できませんでした。 重複する値のあるフィールドの値を変更するか、インデックスを削除してください。または重複する値を使用できるように再定義してください。 ************************************************************************ になってしまいます。 エクセルの列名を見ても重複していないし(COUNTIF関数で確認しました) アクセス側のウィザードでインデックスはどこのフィールドにもつけてないし、 「主キーを設定しない」もしくは「主キーを自動的に設定する」にしているのに、何をやっても上記のエラーがでます。 ググっても同じようなエラー内容が見つからないのですが、どうしたらいいでしょう? ヴァージョンはエクセルは2007、アクセスは2010です。バージョンの相違が原因でしょうか?

  • アクセスのマクロについて

    お世話になります。 アクセスのマクロで、エクセルのファイルをインポートする場合、ファイルを指定したあとにインポートウィザードが開きますが、この時に出てくるたとえば「シートの選択」、「先頭行をフィールド名として使うにチェックを入れる」などをマクロで自動的に出来るのでしょうか?そして最後にインポート先のファイルを指定するところまでマクロで自動的に行き着きたいのですが、可能でしょうか? わかりにくい質問でしたらすみませんが、よろしくお願いいたします。

  • アクセス:エクセルからのインポートエラーについて

    よろしくお願いします。アクセス初心者です。 エクセルから名簿形式のシートをアクセスにインポートしたときの次のようなエラー対策について教えてください。 ・エクセル側で日付と文字が混在しているフィールドがいくつかあります。(例)「2005/10/10」と「入院中」 ・日付と文字が混在しているフィールドがいくつかあっても、アクセスにインポートしたら、アクセス側であるものは「日付/時刻型」、あるものは「テキスト型」に自動でなっています。 ・このとき、アクセス側で「日付/時刻型」となっているフィールドでは、エクセル側で日付がはいっているものは取り込まれ、文字が入っているものがはじかれるようです。 ・逆にアクセス側で「テキスト型」と自動でなっているフィールドの場合には、日付も文字もインポートできています。(但し、日付が文字形式となっているようです) ◆まず、なぜ、同じ日付と文字が混在しているフィールドなのに、「日付/時刻型」になったり「テキスト型」になるのでしょうか? ◆このエラー回避対策はどうすればよいでしょうか。 「テキスト型」に統一してインポートできればいいのですが・・・ 以上、よろしくお願いいたします。

  • Access2003でインポートをマクロで簡単に自動化したいです。

    Access2003でインポートをマクロで簡単に自動化したいです。 今はAccess2003でインポートをマクロにしたい時は、インポートする画面でインポート定義を作っておいて、マクロのテキスト変換でマクロにしています。 これだと、テキスト変換の画面でインポート元のフルパスを指定して、インポート先のテーブルのファイル名を指定しなくてはいけません。 インポート定義を作ってるのだから、定義と同じインポート元、インポート先で簡単にマクロでインポートを自動化する方法はありませんか? マクロにしたいインポートとエクスポートが結構な数あるので、マクロを作る時にいちいちフルパスとファイル名をコピーしてくるのが大変です。 簡単にインポートをマクロにする方法がありましたら、教えてください。

専門家に質問してみよう