• ベストアンサー

CSVデータをAccessのテーブルとして取り込み

アクセスを勉強しはじめた初心者です。 csv形式のデータをアクセスのテーブルとして取り込みたいのですが、日付データがうまく取り込めません。 csvでは日付データが「20110101」という形式になっているためだと思うのですが、これをアクセスに日付「2011/1/1」として取り込むことはできないのでしょうか? csvをエクセルで開いて書式を修正すればできたのですが、csvファイルがたくさんあるため、アクセス側でなんとかできないかと思っています。 よろしくおねがいします。

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

  • ベストアンサー
  • ShowMeHow
  • ベストアンサー率28% (1424/5027)
回答No.1

一旦文字列としてアクセスに仮に取り込んで、クエリなどで変換するのが楽。 クエリでは dateserial(left(strDate,4),mid(strDate,5,2),right(strDate,2)) のような形で、日付形式に変換することができる。

puma4646
質問者

お礼

やりたいことが出来ました! クエリで出来るということも知りませんでした。 ありがとうございました。

その他の回答 (2)

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

一旦文字列のデータをアクセステーブルに作って(Import)、VBAで質問の意図と同じことは出来る。 しかしVBAを組む技量がないだろうな。 ー SQL(プログラ的)でもできる。 http://www.accessclub.jp/bbs6/0012/das3348.html ファイルの数だけ操作・作成のくり返しが要る。 ーー CSVファイルを2012/2/12のような形式に変換していImportも出来る。 しかし簡単なVBAの知識が要る。 Sub test01() Open "CSVファイル1.txt" For Input As #1 Open "CSVファイル2.txt" For Output As #2 While Not EOF(1) Line Input #1, s MsgBox s s = Split(s, ",") s(0) = Left(s(0), 4) & "/" & Mid(s(0), 5, 2) & "/" & Right(s(0), 2) t = "" For i = 0 To UBound(s) t = t & s(i) & "," Next i MsgBox Left(t, Len(t) - 1) Print #2, t Wend Close #1 Close #2 End Sub 第1列目に日付が在る例。 これとても、質問者の場合に合わせるVBAの力が要る。 それをアクセスにインポートするコードが書ける必要がある。 Sub test27() DoCmd.TransferText acImportDelim, , "製品", "CSVファイル2.txt" End Sub のようなコード /つきのデータなら手動でImportしたとき、このフィールドを日付に設定できる操作画面のステップが在る。 ==== テストした結果 元データ(メモ帳で) 20120221,a 20120321,b 20120321,c ーー 上記処理をして ーー インポート後アクセステーブル F1 F2 2012/02/21 a 2012/03/21 b 2012/03/21 c デザインで確認。日付時刻型になってます ーー エクセルで日付にして、そのエクセルファイルを経由する方法もあるかもしれない。 === すべて上述の処理はファイル単位なので、ファイル数が多いと、それを連続して扱うVBAの力が要る。 これもある程度VBAがわかっていて教えてもらわないと手が出ないだろう。

puma4646
質問者

お礼

VBAは組めません。上記は私には難し過ぎで、理解するには時間がかかりそうです。 色々なやり方があるのですね。勉強になりました。 ありがとうございました。

  • layy
  • ベストアンサー率23% (292/1222)
回答No.2

取り込みはインポートつかっているか どこでどう指示してどんな結果ですか?。 有識者は、それを聞けばうまくいかない仕方かどうか判断できます。 『うまくいかない』、なら考えられるところいろいろ勝手に想定しないといけないので遠回りなのです。 アクセスには"20110208"で取り込み、後で更新クエリ等で"2011/2/8"にすることは試したか

puma4646
質問者

お礼

クエリで出来ることも知らず、、勉強になりました。 ありがとうございました。

関連するQ&A