tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルLine Input で改行コードが邪魔する!
記事No14010
投稿日: 2009/09/04(Fri) 15:18
投稿者け〜ちゃん
csvファイルからLine Input #で読み込み、Splitで分割していますが、
まれに、改行コードを含むデータが存在し、思い通りのデータが取り出せません。
Replaceで改行コードを削除しようとしても、Line Inputの1行の途中(改行コード)のところで切れてしまいます。

改行コードを削除した、1行分のデータを取り出すには、どのようにすればいいでしょうか?

[ツリー表示へ]
タイトルRe: Line Input で改行コードが邪魔する!
記事No14012
投稿日: 2009/09/04(Fri) 18:09
投稿者魔界の仮面弁士
> csvファイルからLine Input #で読み込み、Splitで分割していますが、
> まれに、改行コードを含むデータが存在し、思い通りのデータが取り出せません。

Line Input # では無理でしょうね。

そもそも、厄介なのは改行だけではありません。
データ中の「"」や「,」なども問題となるでしょう。


> 改行コードを削除した、1行分のデータを取り出すには、どのようにすればいいでしょうか?
Excel で生成した CSV のように、データ内改行が「LF」固定である場合には、
Jet の Text I-ISAM を用いるという手法があります。

たとえば、C:\a.csv を取り出す場合にはこんな感じ。


Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
Set cn = New ADODB.Connection
cn.Provider = "Microsoft.JET.OLEDB.4.0"
cn.Properties("Extended Properties").Value = "Text;HDR=NO;Database=C:\"
cn.Open
Set rs = cn.Execute("[a.csv]", , adCmdTable)

Dim csv() As Variant
Dim row As Long
row = 0
Do Until rs.EOF
    row = row + 1
    csv = rs.GetRows(1)
    Dim v As Variant
    Debug.Print Tab(1); row;
    For Each v In csv
        Debug.Print ",[" & v & "]";
    Next
Loop
rs.Close
cn.Close


なおこの手法を用いる場合には、型指定のために SCHEMA.INI を併用する事をお奨めします。

[ツリー表示へ]
タイトル【お礼】Line Input で改行コードが邪魔する!
記事No14016
投稿日: 2009/09/07(Mon) 11:56
投稿者け〜ちゃん
回答ありがとうございました。
内容は私には難しいですが、何とかできそうです。
また、お力をお借りしたいと思います。

[ツリー表示へ]