Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


14258 / 76734 ←次へ | 前へ→

【67975】Re:CSVの取込について
発言  kanabun  - 11/1/20(木) 10:50 -

引用なし
パスワード
   ▼なな さん:
こんにちは〜

>CSV内のデータ
>"111","222","333","444","555"
>"666","7,77","888","999","10000"
>上記のようなcsvデータがあって、
>Splitでカンマの位置で分割して配列にしているのですが、

こんな方法はどうでしょう?
一行データの【"】を区切り記号としてSplitして、
ひとつ置きに配列に格納しています。


>"666","7,77","888","999","10000"
これをダブルクォートで Splitすると、

(0) (1) (2)  (3)  (4) (5) (6) (7) (8) (9)  (10)
""  666 ,  7,77  ,  888  ,  999 ,  10000  ""  

となるので、(1),(3),(5),(7),(9) 番目のデータを配列に入れる
という塩梅です(^^

Sub Try1()
 Dim myCSV As String
 Dim Fso As FileSystemObject
 Dim ss As String
 Dim data, v
 
  myCSV = "D:\(Data)\CSVs\カンマ入ダブルクォート.csv"
  Set Fso = New FileSystemObject
  With Fso.OpenTextFile(myCSV)
    ss = .ReadAll
    .Close
  End With
  data = Split(ss, vbCrLf)
  
 Const WQuote = """"
 Dim i As Long, j As Long, k As Long, n As Long
 n = UBound(data) - 1
 ReDim myData(1 To n, 1 To 5)
  For i = 1 To n
    v = Split(data(i), WQuote)
    k = 0
    For j = 1 To UBound(v) Step 2
      k = k + 1
      myData(i, k) = v(j)
    Next
  Next
  ActiveSheet.Range("A2").Resize(n, 5).Value = myData
End Sub

7 hits

【67957】CSVの取込について なな 11/1/19(水) 11:59 質問
【67958】Re:CSVの取込について Jaka 11/1/19(水) 13:08 発言
【67961】Re:CSVの取込について なな 11/1/19(水) 13:27 発言
【67973】Re:CSVの取込について SS 11/1/20(木) 9:12 発言
【67982】Re:CSVの取込について なな 11/1/21(金) 9:46 お礼
【67974】Re:CSVの取込について Yuki 11/1/20(木) 10:30 発言
【67983】Re:CSVの取込について なな 11/1/21(金) 9:51 お礼
【67975】Re:CSVの取込について kanabun 11/1/20(木) 10:50 発言
【67984】Re:CSVの取込について なな 11/1/21(金) 10:18 お礼
【67976】Re:CSVの取込について Hirofumi 11/1/20(木) 11:28 回答
【67985】Re:CSVの取込について なな 11/1/21(金) 10:22 お礼

14258 / 76734 ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free