csvファイルのインポートについて

解決


よし  2004-08-27 03:12:14  No: 85274  IP: [192.*.*.*]

お世話になります。
よしと申します。
CSVファイルをインポートする
と一部のデータが欠落してしまいます。



dim a1,a2,a3,a4,a5,Readline as string

Open strCSVF For Input As #intFNo

Line Input #intFNo, Readline

の場合

debug.print  Readline
内容
1234,2004/08/24(火),264,22,"1,343,700"

この結果は良いのですが、

Input #intFNo, a1, a2, a3,a4,a5
debug.print  a2

2004

で/までの数字のみの取得になります。

2004/08/24(火)の内容でセットするに方法はあるのでしょうか?
ご教授よろしくお願いします。

編集 削除
nobu  2004-08-27 10:00:26  No: 85275  IP: [192.*.*.*]

dim a1,a2,a3,a4,a5,Readline as string とした場合には
Readline のみが string  型で
他は全て Variant 型 になります。
面倒がらずに各変数毎に宣言をして下さい。

例えば
Dim a1 As String
Dim a2 As String
Dim a3 As String
Dim a4 As String
Dim a5 As String
Dim Readline As String

Integer や Long である必要があればそれなりに。

編集 削除
よし  2004-08-28 03:10:31  No: 85276  IP: [192.*.*.*]

ご回答ありがとうございます。
早速宣言を下記にして実行したのですが、
結果は前回と同じく2004の数字のみセットされます。
ご教授よろしくお願いします。

Dim a1 As String
Dim a2 As String
Dim a3 As String
Dim a4 As String
Dim a5 As String
Dim Readline As String

Open strCSVF For Input As #intFNo

Line Input #intFNo, Readline

の場合

debug.print  Readline
内容
1234,2004/08/24(火),264,22,"1,343,700"

この結果は良いのですが、

Input #intFNo, a1, a2, a3,a4,a5
debug.print  a2

2004

で/までの数字のみの取得になります。

編集 削除
Dental  2004-08-28 13:49:38  No: 85277  IP: [192.*.*.*]

Input # は、Write #で出力された物を簡易的に読み込むための物であって、
CSVデータを読むための物では無いですよ。
(Write #で出力されるデータは、CSVではありません。似てるけど)

Line Input # を使って、行単位で読み出した後、Split関数で
カンマ毎に切り出せば、とりあえずの目的は果たせるかと。

ただ、「カンマ」や「改行文字」がデータ中に含まれている場合は
この方法でも正しく取得出来まないので、自力でパースしてください。

編集 削除
よし  2004-08-28 19:41:01  No: 85278  IP: [192.*.*.*]

Split関数でカンマ区切りで変数にセットして可能になりました。
ありがとうございまいした。

編集 削除