| 
    
     |  | 後もう1つ思い出した もし、読み込むCSVがユニックス系の改行コードがLfの場合
 Openステートメントで読み込もうとすると、全てのデータを変数に読み込んでしまう為
 上手く行きません(Openステートメントでは、改行コードは、CrLf、Crだけ)
 この場合、FSOを使って「Sub CSVRead」を以下の様にします
 
 
 Private Sub CSVRead(ByVal strFileName As String, _
 ByRef rngWrite As Range, _
 Optional ByRef lngRow As Long = 1, _
 Optional strDelim As String = ",")
 
 Const ForReading = 1
 
 Dim vntField As Variant
 Dim strBuff As String
 Dim blnMulti As Boolean
 Dim strRec As String
 Dim objFso As Object
 Dim objFileStr As Object
 
 'FSOのオブジェクトを取得
 Set objFso = CreateObject("Scripting.FileSystemObject")
 '指定ファイルを読み込みモードでOpen
 Set objFileStr = objFso.OpenTextFile(strFileName, ForReading)
 
 With objFileStr
 Do Until .AtEndOfStream
 'ファイルから1行読み込み
 strBuff = .ReadLine
 '論理レコードに物理レコードを追加
 strRec = strRec & strBuff
 '論理レコードをフィールドに分割
 vntField = SplitCsv(strRec, strDelim, , , blnMulti)
 'フィールド内で改行が有る場合
 If Not blnMulti Then
 With rngWrite.Offset(lngRow)
 With .Resize(, UBound(vntField) + 1)
 '出力範囲を文字列に設定
 '            .NumberFormat = "@"
 'データを出力
 .Value = vntField
 End With
 End With
 '出力行をインクリメント
 lngRow = lngRow + 1
 strRec = ""
 Else
 '改行が有った場合、単純に連結する時はElse節を削除
 'セル内改行として残す場合
 strRec = strRec & vbLf
 End If
 Loop
 .Close
 End With
 
 Set objFileStr = Nothing
 Set objFso = Nothing
 
 End Sub
 
 |  |