• 締切済み

ダブルクォートで囲まれたCSVファイルについて

CSVを読みこんで配列変換するロジックを考えていますがうまくいきません。 ソースは以下の通りです。 Dim objFs Dim objSm Dim strLine Dim arySplit Set objFs = CreateObject("Scripting.FileSystemObject") Set objSm = objFs.OpenTextFile(C:\sample.csv, 1) Do Until objSm.AtEndOfStream strLine = objSm.ReadLine strLine = Right(strLine, Len(strLine) - 1) strLine = Left(strLine, Len(strLine) - 1) arySplit = Split(strLine, "\"\",\"\"") MsgBox UBound(arySplit) Loop Set objSm = Nothing Set objFs = Nothing ※読み込むCSVファイルはダブルクォートが付いています。 ※正常に配列に変換できたかを確認する為、MsgBoxで配列の要素数を表示しようとしています。 やりたい事は 1.まずは先頭と最後のダブルクォートを除外。 2.区切り文字(\",\")で配列に変換。  ※なぜカンマで配列に変換しないかというとダブルクォートで囲まれた値の中にカンマ文字がある為、このような事をしています。 3.変数に変換した配列を格納。 申し訳ありませんがご教授いただけませんでしょうか。 またどうか皆さんのお知恵を私にお貸しいただけませんでしょうか。 何卒、宜しくお願い致します。

みんなの回答

  • wormhole
  • ベストアンサー率28% (1626/5665)
回答No.1

>2.区切り文字(\",\")で配列に変換。 これだとCSVで "~\",\"~" のように書かれていないと分割されないのでは?(「"で囲まれた」ではなく「\"で囲まれた」になってる) またVB系だとリテラル文字列中にダブルクォーテーションを書く場合はダブルクォーテーションの2回繰り返しなので arySplit = Split(strLine, "\"\",\"\"") は arySplit = Split(strLine, """,""") ではないでしょうか。 ただ元々の発想の "," で分割するのにも問題はあってダブルクォーテーションで囲まれた文字列中に "," が含まれていたら、そこで分割されますよ?(単純に , で分割できないのと同じ)

edo_1972
質問者

お礼

お礼が遅くなってすみません。 chr関数を使用する事で解決しました。 ありがとうございました。