• ベストアンサー

csvファイルのインポート

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

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

  • ベストアンサー
  • Sarukan
  • ベストアンサー率55% (41/74)
回答No.3

回答が遅くなって申し訳ありません。 VBAで行っているという事は、使用しているメソッドは、 DoCmd.TransferText でしょうか。その場合、CSVファイルにコンマ区切りでフィールド名を挿入したら、 DoCmd.TransferText [acImportDelim],,テーブル名,ファイル名,true… と、ファイル名の定義の後ろにCSVファイルの一列目をフィールド名として使用するビット(True)を立ててあげる必要があります(注:[acImportDelim]は省略可能です)。 もし設定されていないようでしたら、変更してあげてみてください。 エラーは回避できると思います。

yke
質問者

お礼

できました!ありがとうございます。 ひょんなことでできるものですね・・・。 でもかなり感動です。

その他の回答 (2)

  • soc
  • ベストアンサー率43% (22/51)
回答No.2

Accessのバージョンが不明なのと、どういう手段を使ってインポートしているのかが不明なのでどう回答していいかが難しいです。 とりあえず、、「F1フィールド...」という言葉が出ている事から、ウィザードを使ってのインポートと解釈してアドバイスします。 CSVファイルの1行目からデータのみになっているでしょうか?。 もし、1行目にフィールド名があるのなら、ウィザードのインポート設定で、「先頭行をフィールド名として使う」にチェックしてください。 また、ウィザードのインポート設定で、「フィールドのオプション」でデータ型が指定できますが、フィールドごとに指定してますか?。 この辺が問題なければ、CSVファイルのデータ自体にも問題があるかも知れないので、データの型を全てテキストにしてテストしてみてはどうでしょうか。

yke
質問者

補足

すみません。バージョンはAccess2000です。それと、処理はすべてVBAでやっています。 ファイル名を入力させて、ボタンをクリックすると自動的にインポートされるようにしたいです。 exsとcsvの2通りのインポート処理を作っています。 Excelファイルのインポートはうまく動くんです・・・。

  • Sarukan
  • ベストアンサー率55% (41/74)
回答No.1

AccessでCSVファイルをインポートしようとした場合、一列目をフィールド名にしない限り便宜上「F1、F2、F3、F4…」とフィールド名が自動的に振られ、指定されたテーブルの、同名のフィールドへデータを保存していこうとします。そのため、 1.CSVファイルの一列目にテーブルのフィールド名が列記された列を挿入させる 2.テーブルのフィールド名をF1、F2…と変更する 3.フィールド名をF1、F2…としたインポート用の一時収容テーブルを作成する のいずれかの対応をしないと「F1フィールドがありません」等のエラーになります。それぞれ特に難しい事はないだろうと思いますが、テーブルをそのままユーザーに参照させるわけでなければ、「2」が最も実用的な対応方だとは思います。とりあえず環境によってどれがいちばん理想的かが変わりますので、いろいろ試してみる事をお勧めします。

yke
質問者

補足

回答ありがとうございます。 ユーザーがテーブルを参照することもあるので、テーブルをいじることはできません。 だからCSVファイルにテーブルのフィールド名を加えてみました。 しかし、それでも「F1フィールドがありません」となります。 Excelファイルのインポートはうまく動くので、それを利用して何とかできないものでしょうか? VBAでやっています。

関連するQ&A