人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Access2003のテーブルにCSVをインポートしたいと思います。テーブルに挿入する前に文字列チェックをするので、
1件づつファイルデータを読み込んでデータチェックを行っています(見出しはありません)。

読み込むテキストは下記。
あいうえお,かきこくえこ,さしすせそ,
ABCDEFG,EFGHIJ,KLMNOPQRST,
1000,20,000,5000000,
テキスト以上

VBAコード
FF = FreeFile
Open FileName For Input As #FF
Do Until EOF(FF)
Input #FF, _
A,B,C 'A,B,Cは文字列型変数

'ここでA,B,Cのデータをチェック。アポストロフィーが入っていたら除去など

SQL =""
SQL ="insert into TABLE1 VALUES(A,B,C)
Loop

このコードを実行すると、「20,000」でエラーが発生します。「20,000」にカンマが入っているので当然なのですが、
このエラーを発生させない為にはどういった処理をすればよいでしょうか?1件や2件であればCSVを直接なおせば
良いですが、件数が大量にあるので手でなおすわけにもいかなかったりします。

●質問者: akaired
●カテゴリ:コンピュータ
✍キーワード:as CSV ff LOOP open
○ 状態 :終了
└ 回答数 : 3/5件

▽最新の回答へ

1 ● degucho
●70ポイント

3列固定フォーマットで2列目にカンマ入り数字が入る可能性がある、

ということでいいのでしょうか?


・InputではなくLineInputで1行読んでSplit()で配列に入れる

・配列の要素数が4つあったら2個目と3個目を合体、4つ目を3個目として扱う


http://www.red.oit-net.jp/tatsuya/vb/Open.htm#LineInput

http://jeanne.wankuma.com/tips/vb6/string/split.html

◎質問者からの返答

問題は実際には100列あって、問題のある列が99列目にあります・・・

そしてアルファベットと数値、漢字、平仮名のコンビネーションの中に「,」があります。

ただ、カンマといっても99列目にあるカンマは半角カンマではなく全角カンマです「,」。

半角カンマならわかるのですが、全角カンマもVBA側でカンマと判定されてしまいます・・・


2 ● ふるるP
●10ポイント

数値がカンマ編集されているのはどういうときでしょうか。

3列のデータに対し、4列以上のデータが混入している可能性がある、ということですよね。

そのカンマが多いのは数値をカンマ編集されているからとして、実際にどこがデータの区切りなのかが判らなければ、対応できないでしょう。

例えば、

1000,2,000,100,500

とあった場合、1000と2000と100500なのか1000と2000100と500なのか区別できませんね。例では1行に対し全て全角の行、全てアルファベットの行、全て数字の行、となっていますが、それはただしいのでしょうか? 数字とアルファベットが混ざっていることはないでしょうか?

2番目の数字だけがカンマ編集されている、という前提があれば、degucho さんの方法をもう少し発展させて(1行の配列の要素数が4つではなく5つ以上もありえるでしょう)で出来ると思います。

2列目のデータが例えば1,000,000 となっていればheke2mee さんの方法も可能ですが、

例えば1,234,000とかになると1,234が残ってしまうので失敗します。

◎質問者からの返答

問題はCSVは別の所で作られ、送られてきます。それをアクセスで取り込みたいと思っていたのですが、送られてきたCSVの中に予期せぬカンマが混じっていたため、これをどうやって処理するか質問させていただきました。アルファベットと数字が入り混じっている場合もあります。Excelだったら処理できるのですが、CSVでどうやって処理するか悩みどころです。


3 ● ふるるP
●0ポイント

全角カンマを半角カンマとして、データ区切りと誤認識することだけが問題であるなら、Line InputとSplit関数で解決するでしょう。

実際の問題は、このCSVファイルを作る側にあります。数値はカンマ編集させない、文字列の中にカンマが含むケースがあるなら、文字列の列に対しては"で括る、等読み取られることを考慮したつくりにしないといけません。

ファイルフォーマットについてCSVファイル作成側と話し合った方がいいでしょう。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ