CSVファイルを読む
CSVを読む方法は、CSVファイルの読み込みで紹介済みです。
でも、まともに読めない場合があるのです。
CSVはデータとデータがカンマ(,)で区切られているのですが、データの中にカンマ(,)が
入っていたらどうしましょう。
データの中にカンマ(,)がある場合は、データをダブルクォーテーション(")で
囲んであります。
aaa,bbb,ccc,"ddd,ddd",eee
こんな形になります。
これでも正しく読めるようにしたのが以下のサンプルです。
Sub CSV_Read()
Dim Open_Workbook_Name As String
Dim Prompt As String
Dim FileNamePath As Variant
FileNamePath = Application.GetOpenFilename("CSV ファイル (*.csv),*.csv", , Prompt)
If FileNamePath = False Then
Exit Sub
End If
CSVRead FileNamePath, Open_Workbook_Name
End Sub
Sub CSVRead(FileNamePath, Open_Workbook_Name)
Dim Open_Workbook As Workbook
Dim textline As String
Dim csvline() As String
Dim Rowcnt As Integer
Dim TextObject As Object
Const ForReading = 1
Const ForWriting = 2
Rowcnt = 1
Workbooks.Add
Set TextObject = CreateObject("Scripting.FileSystemObject"). _
OpenTextFile(FileNamePath, ForReading, False)
Do While TextObject.AtEndOfStream < > True
textline = lineFormat(TextObject.ReadLine)
csvline() = Split(textline, vbBack)
Range(Cells(Rowcnt, 1), Cells(Rowcnt, UBound(csvline()) + 1)) = csvline()
Rowcnt = Rowcnt + 1
Loop
TextObject.Close
Set TextObject = Nothing
Open_Workbook_Name = ActiveWorkbook.Name
End Sub
Function lineFormat(ByVal line As String) As String
Dim format_line As String
Dim i As Integer
Dim flg As Integer
format_line = ""
flg = 0
If InStr(line, """") > 0 Then
For i = 1 To Len(line)
If Mid(line, i, 1) = """" Then
flg = 1 - flg
ElseIf flg = 0 And Mid(line, i, 1) = "," Then
format_line = format_line + vbBack
Else
format_line = format_line + Mid(line, i, 1)
End If
Next
Else
format_line = Replace(line, ",", vbBack)
End If
lineFormat = format_line
End Function
StartKitsParts.xls をダウンロードして、ご使用ください。