• ベストアンサー

CSVファイルをアクセスのテーブルに出力する

こんにちは Access VBA初心者です。 やりたい処理なのですが CSVファイルをmdb内であらかじめ作成されているテーブルに出力したいのですが、 最初にTransferTextwでワークのテーブルにインポートして そのワークテーブルを1レコードずつ読み込みmdbのあらかじめ作成されているテーブルにINSERTしていくという方法しか今思いつきません。 インポートするとワークテーブルはすべてテキスト型になっていますが、 それを違う型の項目にINSERTするということなど可能なのでしょうか? それとももっとスマートな方法があるのでしょうか? ざっくりと書いてしまいましたが、よろしくお願いいたします。

  • rariko
  • お礼率28% (223/790)

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

  • ベストアンサー
  • gatt_mk
  • ベストアンサー率29% (356/1220)
回答No.2

1.CSVファイルをリンクする。 2.1で作成したリンクテーブルを元にしてクエリを作成する。 3.2のクエリーを追加クエリーにして、その各項目をデータ取り込みを行うテーブルのレコードを追加する各項目と一致させる。 4.クエリを実行する。 VBAで自動化したい場合、CSVファイル名やパスが毎回同じなら、4だけを実行する形(Docmd.OpenQuery)だけでいいかと思います。

その他の回答 (1)

  • omotasam
  • ベストアンサー率28% (69/246)
回答No.1

えーっと、accessが手元にないので、記憶の中から・・・・ インポートのウィザードで「既存のテーブルにインポート」ってのがあったと思いますが。 記憶違いでしたらごめんなさい。

関連するQ&A

  • 【ACCESS】インポート定義を使わないCSVインポート

    ACCESS VBAにてMDBにSQL文でCSVデータをINSERTしようとしています。INSERT自体はうまくいったのですが、データの型をうまくそろえられません。2日程ネットサーフィンしているものの良いサンプルを見つけられません。有識者の方、ご存知でしたら是非教えてください! まず、CSVデータは以下のようなものです。 ===aaa.csv=== 00000001,2009/1/31 00000002,2009/1/31 ・ ・ A000001,2009/1/31 Z000002,2009/1/31 ========== これを 既存テーブル:aaa_TBLに取り込ませたく、以下のSQL文を書きました。 INSERT INTO aaa_TBL(カラム1,カラム2) SELECT FORMAT([aaa#CSV].F1,'0000000'),[aaa#CSV].F2 FROM aaa#csv IN 'C:\' 'Text;HDR=NO' これにて「0000001」と「000002」等のレコードは正常に取り込むことができましたが、「A000001」「B000002」等のデータは取り込まれず、NULLにて登録されておりました。 (aaa_TBL自体はカラム1=テキスト型、カラム2=日付型でCreateされております。) これを回避したく、いろんなサイトを訪問したのですが、ほとんどがインポート定義を使った方法を推奨しておりました。 しかしながら、私にはどうしてもインポート定義が理解できないんです! 「VBAにて○○.iniを作成する方法」などをよく見かけるんですが、できるだけ他の方法を検討したいと考えております。(今後、ACCESS VBAから他言語への乗り換えを考えているとか、他CSVにてインポートされるテーブルの数が30個程あるので、インポート定義ファイルの管理がつらいな・・・とか色々他にも理由はあるんですが・・・・) 何か良い方法はないでしょうか?! やはりインポート定義を作らないとだめでしょうか?! その場合、簡単なサンプルコードなどを頂けますと非常に助かります。。。(MSサイトのサンプルコードは理解できませんでした。。。) まだVBAを勉強し始めて2週間なので、色々突っ込みどころはあると思いますが、どうぞよろしくお願いしますm(_ _)m

  • Accessにインポートしたら並び順が変わっちゃった

    Access2000 を使っています。 ExcelデータをAccessテーブルにしようとしましたが、全項目をテキスト型で入れたいのに、自動的に各項目の型が変わってしまうので、一旦CSVに落としてAccessにインポートしました。 ところが、インポートされたテーブルではレコード順が違っちゃっているんです。 総数は変わっていませんから、全て入ってはいるんでしょうが。 いったい何がいけないんでしょうか。多量のデータをインポートするのに不安でいけません。誰か教えて下さい。

  • ACCESSで毎回CSVファイルをテーブルにインポートする

    ACCESSでGUIで毎回CSVファイルをインポートしていますが、 (テーブル→新規作成→デーブルのインポート) 自動化?VBA?することはできるのでしょうか。 ACCSESSは初心者でよくわかっていません。 よろしくおねがいします。

  • Access2000 CSVファイルのインポート

    アクセスでCSVファイルをインポートしようと思うのですが CSVファイルに項目がありません。 COBOLで作成したファイルなのですが レコードだけの状態です。そのままインポートしようと しても文字化けのような感じになります。 どうしたらよいでしょうか?

  • Access2000のMDBファイルをVBScriptやWSH?で

    Access2000のmdbファイルがあります。 VBScriptでテーブル名の一覧をテキストに落としたり、 特定のテーブルのレコードにあるデータに1.05を掛けて テキストにcsvの形で出力させたいのですが、何か良いサンプルはあるのでしょうか?

  • ACCESSのテーブルをCSVファイルに

    こんにちは。 ACCESSテーブル内のフィールド値をカンマ付きのテキストファイルまたは CSVファイルで出力したいのですがなにか良い方法はないのでしょうか? ちなみにDoCmd.TransferTextだのDoCmd.OutputToを試してみたので すが、うまくいきませんでした。 よろしくお願いします。

  • csvファイルをAccessに取り込むとデータ数が増える

    項目をカンマで区切っただけの単純なcsvファイルをAccessでインポートしてテーブルを作成したら、データ数が増えてしまいました。 (csvファイルをテキストで開いたときの行数と、Accessの行数が異なる) 5000件ぐらいなら、csvもAccessもデータ数は同じなのですが、データ数が大きくなると、csvとAccessのテーブルで6万件とかの差分が出てしまいます。 csvファイルとAccessで、データ数を同じにするにはどうしたら良いでしょうか。 参考になるURLでも良いので、教えて頂ければと思います。 よろしくお願いします!

  • ACCESSのテーブルをCSVにして

    お願いします。 ACCESSのテーブルをCSVにして指定のホルダーに入れたいのです。 テーブル T_在庫表  項目は 「品番」 「在庫数」 エクスポート先 c\在庫\在庫表.txt マクロで テキスト変換   区切り記号付きインポート 在庫 c\在庫\在庫表.txt と入れましたがうまくできません。 ほかにいい方法はありませんか?

  • csvファイルのインポート

    Accessでcsvファイルをインポートさせようとしています。しかし、「F1フィールドがありません」のようなエラー表示が出て、できません。私の予想では、テーブルの型とcsvファイルの型が違うのではないかと思っています。テーブルには、数値型、テキスト型、日付/データ型があります。 保存したcsvファイルをExcelで開くと日付がApr-01や、2001/06/26となったりしていました。どこかで型変換のようなことをするのでしょうか?csvのことはよく分かりません。どうか、よろしくお願いします。

  • ACCESSで、テキストファイルをインポートしたい

    宜しくお願い致します。 ACCESSで、テキストファイルをインポートしてテーブルを作成したいのですが、ファイル→インポートを選択して、ウィザードを開く方法は分かるのですが、マクロを作成してインポートは出来ないでしょうか? excel、CSVファイルでしたら、「ワークシート変換」、「テキスト変換」のマクロでインポートしたりエクスポートしたり出来ると思うのですが・・・、 (1)テキストファイルをインポートしたり、エクスポートしたりする場合、どのようなマクロがあるのでしょうか。 (ためしに、「出力」マクロで、あるテーブルをCSVファイルにエクスポートしてみたのですが、カンマ区切りにできず、excelのような枠付きのテキストファイルになってしまいました。) (2)容量が大きいデータの場合は、テキストファイルでエクスポートしたほうが良い・・・という認識に間違いはありませんでしょうか。 質問が一つ増えてしまいましたが、宜しくお願い致します。