|    | 
     下記VBAを活用させていただいていますが、 
"東京都,中央区","銀座",と書かれたCSVを読み込んだとき 
東京都 中央区 銀座 三つのセルに分かれます。 
東京都中央区 銀座 二つのセルに分ける、つまり 
" "内の,を無視する方法を教えてください 
 
 
Sub TEXT_CSV2K_READ() 
  Dim FSO   As Object  ' File System Obj 
  Dim FsoTS  As Object  ' FSO.TextStream Obj 
  Dim File  As Object  ' FSO.file Obj 
  Dim strFN  As String  ' File Name 
  Dim eLN   As Long   ' CSVファイルの行数 
  Dim CLM   As Long   ' シート数 
  Dim strD  As String  ' 一行データ 
  Dim vD   As Variant ' 一行分配列 
  Dim vA()  As Variant ' シート用配列 
  Dim vX()  As Variant ' セル用 
  Dim i    As Long 
  Dim j    As Long 
   
  strFN = "D:\Excel\Test.csv" 
   
  Set FSO = CreateObject("Scripting.FileSystemObject") 
   
  Set FsoTS = FSO.OpenTextFile(strFN, 8) 
  eLN = FsoTS.Line - 1 
  FsoTS.Close 
   
  Set File = FSO.GetFile(strFN) 
  Set FsoTS = File.OpenAsTextStream(1) 
   
  ' 前処理 
  strD = FsoTS.ReadLine 
   
  vD = Split(strD, ",") 
  If UBound(vD) > 255 Then 
    CLM = Int(UBound(vD) / 256) + 1 
  Else 
    CLM = 1 
  End If 
  ' シート不足分追加 
  If Worksheets.Count < CLM Then 
    Worksheets.Add Count:=CLM - Worksheets.Count 
  End If 
 
  ReDim vX(1 To CLM) 
  ReDim vA(1 To eLN, UBound(vD) - 1) 
   
  For i = 1 To CLM 
    vX(i) = vA 
  Next 
   
  j = 1 
  For i = 0 To UBound(vD) 
    vX(Int(i / 256) + 1)(j, i Mod 256) = vD(i) 
  Next 
   
  '本処理 
  Do While Not FsoTS.AtEndOfStream 
    DoEvents 
    strD = FsoTS.ReadLine 
    vD = Split(strD, ",") 
    j = j + 1 
    For i = 0 To UBound(vD) 
      vX(Int(i / 256) + 1)(j, i Mod 256) = vD(i) 
    Next 
  Loop 
   
  ' シートに貼り付け 
  For i = 1 To CLM 
    DoEvents 
    With Worksheets(i) 
      .Cells.ClearContents 
      .Range("A1").Resize(j, 256).Value = vX(i) 
    End With 
  Next 
  FsoTS.Close 
  Set FsoTS = Nothing 
  Set FSO = Nothing 
 End Sub 
 
 | 
     
    
   |