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

解決


よし  2004-08-27 12:12:14  No: 85274

お世話になります。
よしと申します。
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 19:00:26  No: 85275

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 12:10:31  No: 85276

ご回答ありがとうございます。
早速宣言を下記にして実行したのですが、
結果は前回と同じく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 22:49:38  No: 85277

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

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

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


よし  2004-08-29 04:41:01  No: 85278

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


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加