環境 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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) Sub 分けてソートして貼り付ける() Dim srcSheet As Worksheet Dim 6 2023/08/04 19:57
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- その他(Microsoft Office) マクロVBAについて 1 2022/09/06 18:12
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Java javaのCSVデータ読込についてです 6 2022/07/02 10:58
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) Sheet2の日付をキーにオートフィルターで2023年1月のデータを抽出し、Sheet3へ書き出すた 2 2023/03/06 23:57
このQ&Aを見た人はこんなQ&Aも見ています
-
外出時に「待たせる妻」vs イライラする「待つ夫」は日本だけ?見習いたい海外事情
夫の家事参加に積極的なイメージのある海外でも、同様の事例はあるのか。結婚カウンセラーの佐竹悦子さんに伺ってみた。
-
データにカンマが入ったCSVデータのread方法
Visual Basic(VBA)
-
Visual Basic 6.0 コンボボックスのChangeイベントが発生しません
Visual Basic(VBA)
-
VBPをダブルクリックするとたまに「メソッドは失敗しました " オブジェクト」と出るのですが?
Visual Basic(VBA)
-
-
4
テキストボックスのエンターキー無効
Visual Basic(VBA)
-
5
VB6.0 のformat関数について
Visual Basic(VBA)
-
6
VB6 配列を初期化したい
Visual Basic(VBA)
-
7
SJIS->UTF8->SJISコード変換について
Visual Basic(VBA)
-
8
VB6でCSVの取込をする
Visual Basic(VBA)
-
9
DoEventsがやはり分からない
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
VB.NETの配列にExcelから読み込...
-
エクセルでXY座標に並べられた...
-
Redim とEraseの違いは?
-
配列の中の最大値とそのインデ...
-
テキストボックの文字を一行ず...
-
VB6のメモリ解放に関して
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
構造体配列内の文字列検索のよ...
-
vba フィルター 複数条件 3つ以...
-
free()関数の多用 と Segment...
-
2次元配列のソート
-
VBAのワークシート関数で配列の...
-
Dir関数で読み取り順を操作でき...
-
ASPで配列を作る方法
-
excel vbaの配列なんですが・・・
-
配列の中から最大値だけ取り出...
-
大量の変数を定義するにはどう...
-
グラフの「項目軸ラベルに使用...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA 変数名に変数を使用したい。
-
vba フィルター 複数条件 3つ以...
-
C#でbyte配列から画像を表示さ...
-
Excel2010のinputboxで複数デー...
-
エクセルでXY座標に並べられた...
-
構造体配列の特定のメンバーをF...
-
定数配列の書き方
-
コンボボックスのインデックス...
-
OutOfMemoryExceptionの回避策...
-
Dir関数で読み取り順を操作でき...
-
CheckBoxの配列化
-
構造体配列内の文字列検索のよ...
-
COBOLの基本的な事なので...
-
Redim とEraseの違いは?
-
VBAで配列引数を値渡しできない...
-
2次元配列の初期値
-
配列の中の最大値とそのインデ...
-
大量の変数を定義するにはどう...
-
VB6からの移行したいけど、VB.N...
-
VB6のメモリ解放に関して
おすすめ情報