• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:SPLIT関数)

VB6.0環境でのCSVデータのカンマ区切り

このQ&Aのポイント
  • VB6.0環境でCSVデータをカンマで区切って取得する方法について説明します。
  • ダブルコーテーションで囲まれたデータの場合はカンマを無視することができます。
  • VB6.0のSplit関数を使用して、カンマ区切りのCSVデータを取得する例を示します。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.6

3度目のすいませんです。 また、間違えてました。 (もっと良く考えてから回答しないとだめですね。) 余計な空白が入ってしまいました。 '1度配列を結合し再度[,]で区切る XWDNDATA = Split(Join(XWDNDATA, ""), ",") に変更してください。 もう変更は無いと思います。(無い事を祈ってます)

GERRARD
質問者

お礼

taisuke555さんありがとうございました。すみませんたくさんソースを書いてくださって。taisuke555さんのおかげでできました。すっげーうれしいです。

その他の回答 (5)

回答No.5

さらにすいません。 それなら Private Sub Test()   Dim CSVDATA As String   Dim XWDNDATA() As String   Dim i     As Integer     Dim Dat    As String 'デバッグ用     CSVDATA = "1,2,""あいう,おえお"",25"     'データを["]で区切る   XWDNDATA = Split(CSVDATA, """")     '奇数番目の配列の[,]を削除する   For i = 1 To UBound(XWDNDATA) Step 2     XWDNDATA(i) = Replace(XWDNDATA(i), ",", "")   Next i   '1度配列を結合し再度[,]で区切る   XWDNDATA = Split(Join(XWDNDATA), ",")     'デバッグ用   For i = 0 To UBound(XWDNDATA)     Dat = Dat & i & "=" & XWDNDATA(i) & Chr(13)   Next i     MsgBox Dat End Sub でいいですね。(これなら絶対にでない文字[@]は必要ないです。)

回答No.4

すいません。 「あいう,おえお」→「あいうおえお」 にしたいのでしたね。   '偶数番目の配列の[,]を[@]に置換する   '奇数番目の配列の[,]を削除する   For i = 0 To UBound(XWDNDATA)     If (i Mod 2 = 0) Then       XWDNDATA(i) = Replace(XWDNDATA(i), ",", "@")     Else       XWDNDATA(i) = Replace(XWDNDATA(i), ",", "")     End If   Next i に訂正してください。

回答No.3

こんな方法はいかがでしょう? Private Sub Test()   Dim CSVDATA As String   Dim XWDNDATA() As String   Dim i     As Integer     Dim Dat    As String 'デバッグ用     CSVDATA = "1,2,""あいう,おえお"",25"     'データを["]で区切る   XWDNDATA = Split(CSVDATA, """")     '偶数番目の配列の[,]を[@]に置換する   For i = 0 To UBound(XWDNDATA) Step 2     XWDNDATA(i) = Replace(XWDNDATA(i), ",", "@")   Next i   '1度配列を結合し再度[@]で区切る   XWDNDATA = Split(Join(XWDNDATA), "@")     'デバッグ用   For i = 0 To UBound(XWDNDATA)     Dat = Dat & i & "=" & XWDNDATA(i) & Chr(13)   Next i     MsgBox Dat End Sub [,]を[@]に置換していますが、 文字列中に絶対に出てこない文字ならば[#]でも[|]でも何でもいいです。 ただ、絶対に出てこない文字が無ければ無理ですね。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

質問例しかテストしていませんのでバグがあるかもしれませんが、興味があれば改良してください。「,」から、「,」までに「”」があると次ぎの「”」までを切り出しています。 Sub test03() c = "1,2,""あいう,おえお"",25" s = 1 j1: p = InStr(s, c, ",") If p = 0 Then b = Mid(c, s, Len(c) + 1 - s) Else b = Mid(c, s, p - s) End If p1 = InStr(1, b, """") If p1 = 0 Then s = p + 1 Else p2 = InStr(p + 1, c, """") b = Mid(c, s, p2 + 1 - s) s = p2 + 2 End If MsgBox b If p <> 0 Then GoTo j1 End Sub

noname#4564
noname#4564
回答No.1

  正規表現を使えば簡単です。

参考URL:
http://fukkey.dyndns.org/pins/vb/020425/35943.html

関連するQ&A

専門家に質問してみよう