• 締切済み

Access VBAでCSVファイルをインポートする方法

こんにちは。 私は今AccessVBAである管理用データベースをつくろうと思っているのですが、 一番最初の作業であるインポートがどうしてもうまくいきません。 CSVファイルのインポートで、「TransferText」を使うところまではわかっているのですが、 引数の書き方がヘルプを見てもちょっとわかりにくくて・・・。 どなたかわかりやすくご教授願えないでしょうか。 ちなみに私なりにインポートのプログラムを書いたら「実行時エラー'2391' 貼り付け先の'kyk1'テーブルには'F1'フィールドがありません」と出ました。 これは一体どういう意味なんでしょうか?

みんなの回答

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

こんにちは。 #2 の Wendy02です。 >CSVファイルにはフィールド行はありませんので、あの部分は「False」で正しいものと私も思っていましたがあのエラーが出るんですよ。 既存のテーブルに入れるのでしたら、エラーがでます。仮のフィールドが必要ですからね。 #3 さんが紹介してくれた内容でも、 >元になるデータと完全にフィールド名を一致させておく必要があります。 というわけで、何もない状態では、DBデータとして受け入れられないわけですね。ダミーテーブルがよいのでは、とは思ったのですが、私には、#3さんのインポート定義が、VBAで有効なのか、良く分かりません。 私は、あくまでも、VBAの側からみた話ですが、CSVのフィールドが決まっているなら、一行目をテキストストームなどで、フィールドのテキスト・データを加えてから、改めてインポートしても、よほど、大きなものでない限りは、そんなに問題じゃないよう思います。 ADO は、DB系のVBA/VBでは必須なのですが、詳しい内容は、谷尻かおりさんの本などに出てきます。上記で述べたよりは、遥かに難しくなります。 簡単な読み物でしたら、ADO入門講座(Access Club) http://www.accessclub.jp/ado/index.html があります。

  • m3_maki
  • ベストアンサー率64% (296/460)
回答No.3

あらかじめ「インポート定義」を作成しておき、 第2引数を省略せずに指定します。 「インポート定義」の作り方はこちらを参考に。 http://www.microsoft.com/japan/technet/archive/columns/suo/accessimport.mspx?mfr=true

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

こんにちは。 私は、Access は、門外漢ですが、 例えば、  DoCmd.TransferText acImportDelim, , "kyk1", strFileName, False   とした時に、 >貼り付け先の'kyk1'テーブルには'F1'フィールドがありません」と出ました というのは、まず、HasFieldName (上記では、Falseとしている)では、先頭行をフィールド名として使用しませんので、仮のフィールドのF1 を探そうとするけれども、kyk1 テーブルには、F1 フィールドがありませんから、エラーが返ってくると思います。 CSV データにkyk1テーブルと同じフィールドがあると仮定すれば、  DoCmd.TransferText acImportDelim, , "kyk1", strFileName, True としたら、出来るはずです。(ダブりなどがあれば、そのデータは弾かれます) フィールド行がなければ、ダミーテーブルを作っておくほかには、TransferText では出来ないように思います。もしVBAが詳しい方なら、最初から、ADOを使ったほうが早いような気がします。 そうでなければ、インポート・ウィザードを使うことになると思うのです。

noname#181362
質問者

お礼

詳しくご回答いただきありがとうございます。 CSVファイルにはフィールド行はありませんので、あの部分は「False」で正しいものと私も思っていましたがあのエラーが出るんですよ。 一度、ファイル→外部データの読込みからインポートし、テーブルのデータだけを消して、 再度VBAでインポートしようとしたのですが同じエラーがでました。 もう原因不明なのでインポート・ウィザードを使おうとは思っています。 ひとつ教えていただきたいのですが、ADOとは何でしょうか?自分が買ったVBAの参考書にも載ってはいるんですが、少ししか載ってなくて・・・。

  • bonaron
  • ベストアンサー率64% (482/745)
回答No.1

こちらを参考に。 http://www.accessclub.jp/bbs3/0115/superbeg40731.html まず、「テキスト変換」マクロで作ってみて、 それを VBのコードに変換しましょう。 多くのアクセスプログラマがやってきたことです。

参考URL:
http://www.accessclub.jp/bbs3/0115/superbeg40731.html

関連するQ&A