![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
環境 VB6.0
CSVデータをカンマで区切ってデータを取得して
いるのですが、こういう処理はできるのでしょうか?
例えば データがダブルコーテーションでくるられて
いる場合はカンマ(,)を無視するといった
ことはできるのでしょうか?
DIM CSVDATA AS STRING
DIM XWDNDATA() AS STRING
CSVDATA = "1,2,"あいう,おえお",25"
XWDNData = Split(CSVDATA, ",")
XWDNData(0) = "1"
XWDNData(1) = "2"
XWDNData(2) = ""あいう"
XWDNData(3) = "おえお""
XWDNData(4) = "25"
XWDNData(2)とXWDNData(3)を一つのデータとしたい
こうしたいデータ
XWDNData(0) = "1"
XWDNData(1) = "2"
XWDNData(2) = "あいうおえお"
XWDNData(3) = "25"
No.6ベストアンサー
- 回答日時:
3度目のすいませんです。
また、間違えてました。
(もっと良く考えてから回答しないとだめですね。)
余計な空白が入ってしまいました。
'1度配列を結合し再度[,]で区切る
XWDNDATA = Split(Join(XWDNDATA, ""), ",")
に変更してください。
もう変更は無いと思います。(無い事を祈ってます)
taisuke555さんありがとうございました。すみませんたくさんソースを書いてくださって。taisuke555さんのおかげでできました。すっげーうれしいです。
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
[,]を[@]に置換していますが、
文字列中に絶対に出てこない文字ならば[#]でも[|]でも何でもいいです。
ただ、絶対に出てこない文字が無ければ無理ですね。
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
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
COBOLの基本的な事なので...
-
vba フィルター 複数条件 3つ以...
-
コンボボックスのインデックス...
-
構造体配列の特定のメンバーをF...
-
VB6のメモリ解放に関して
-
VB.NETの配列の限界を教えてく...
-
CheckBoxの配列化
-
Excel2010のinputboxで複数デー...
-
VBAでMODE関数をつくる
-
C#でbyte配列から画像を表示さ...
-
エクセルでXY座標に並べられた...
-
VBAにて、配列のデータを一度に...
-
Dir関数で読み取り順を操作でき...
-
画像の座標取得
-
VBScriptでCSVファイルを読み出...
-
定数配列の書き方
-
OutOfMemoryExceptionの回避策...
-
配列をランダムに並び替えても...
-
エクセル(VBA)の空白配列の削除...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
エクセルでXY座標に並べられた...
-
Dir関数で読み取り順を操作でき...
-
Redim とEraseの違いは?
-
VB.NETの配列にExcelから読み込...
-
VB6のメモリ解放に関して
-
配列の中の最大値とそのインデ...
-
構造体配列内の文字列検索のよ...
-
構造体配列の特定のメンバーをF...
-
VBAでMODE関数をつくる
-
Excel2010のinputboxで複数デー...
-
COBOLの基本的な事なので...
-
Segmentation Fault (メモリ制限?)
-
定数配列の書き方
-
OutOfMemoryExceptionの回避策...
-
VBScriptでCSVファイルを読み出...
-
コンボボックスのインデックス...
-
DBから取得した値を配列へ代入する
おすすめ情報