2


1

CSVファイルを区切るVB6カンマ

私はコンマ区切りのファイルを分離しようとしていますが、何らかの理由で、取得しようとしていた出力を取得していないようです。

これがコードです:

strCSVPath = "E:\cfaApp\tester.csv"
int77 = FreeFile
Open strCSVPath For Input As #int77

Do Until EOF(int77)
    Input #int77, strName, intHours, strMon, strTue, strWed, strThu, strFri, strSat
    Debug.Print strName & vbCr & intHours
    'Debug.Print strName & vbCr & intHours & vbCr & strMon & vbCr & strTue & vbCr & strWed & vbCr & strThu & vbCr & strFri & vbCr & strSat & vbCr
Loop

出力は次のようになります。

1.0-Store Manager (1 Employee)

11:00 AM-8:30 PM

10:00 AM-7:30 PM
1.1-Assistant Managers
Wood, Chris

上記の出力は間違っています。 これはCSVファイルです(すべてではありません)

1.0-Store Manager (1 Employee),,,,,,,,
"Pro, Bob",1.0-Store Manager,47.5,5:30 AM-3:00 PM,5:30 AM-3:00 PM,11:00 AM-8:30 PM,11:00 AM-8:30 PM,9:00 AM-6:30 PM,OFF
1.1-Assistant Managers (3 Employees),,,,,,,,
"Crow, Billy",1.1-Assistant Managers,47.5,10:00 AM-7:30 PM,5:30 AM-3:00 PM,5:30 AM-3:00 PM,5:30 AM-3:00 PM,OFF,11:00 AM-8:30 PM
"Ras, Pat",1.1-Assistant Managers,47.5,5:30 AM-3:00 PM,9:00 AM-6:30 PM,10:00 AM-7:30 PM,,11:00 AM-8:30 PM,9:00 AM-6:30 PM
"Wood, Chris",1.1-Assistant Managers,47.5,,11:00 AM-8:00 PM,8:30 AM-6:30 PM,10:00 AM-7:30 PM,5:30 AM-3:00 PM,5:30 AM-3:00 PM
1.2- Supervisors (7 Employees),,,,,,,,

ご覧のとおり、出力はPro、Bobを完全にスキップします。 そして、ウッドを表示する前にカラスとラスをスキップします。

エラーも発生します

 Input past end of file

3 Answer


2


つまり、入力番号はCSVを読み取るようには設計されていません。 http://msdn.microsoft.com/en-us/library/aa243386(v=VS.60).aspxを参照してください

VB6から使用できる外部CSVパーサーが存在する可能性がありますが、私はそれが何であるかを知りません。 一度に1文字を取得し、有限状態マシンを使用するCSVパーサーをかなり簡単に作成できます。


1


VB6を使用してからしばらく経ちましたが、 `ADODB.Recordset`オブジェクトをhttp://www.vb-helper.com/howto_ado_load_csv.html[CSVファイルのクエリSQLデータベース]。

Microsoftのドキュメントは、http://msdn.microsoft.com/en-usの方法を含む/library/ms709353%28v=VS.85%29.aspx [ヘッダー行のないCSVファイルを読み取る]。


0


;などの他のセパレータを使用してみてください。またはパイプ。 次に、出力が正常かどうかを確認します。 YESの場合は、名前にカンマを引用するか、 'Have Fun、John