|
ちょっと、簡潔なコードにしてみましたので、宜しかったら時間を
比較してみてください。
For〜Nextを無くしたのですが、処理時間は、どんな感じでしょうか。
Sub CsvRead()
Dim Num As Integer
Dim Rw As Long
Dim LineDat As String
Dim LeftStr As String
Const Cols = 8 ' <--- 取得列数
Dim D
Num = FreeFile
Application.ScreenUpdating = False
Cells.Delete
Range("A:A").Resize(, Cols).NumberFormatLocal = "@"
Open ThisWorkbook.Path & "\data.csv" For Input As #Num
Do Until EOF(Num)
Line Input #Num, LineDat
D = Split(LineDat, ",")
ReDim Preserve D(Cols)
If Not LeftStr = D(0) Then
Range("A1").Resize(, UBound(D)).Offset(Rw).Value = D
LeftStr = D(0)
Rw = Rw + 1
If Rw = 65537 Then
MsgBox "行数が多過ぎて取込めない部分がある可能性があります。"
Exit Do
End If
End If
Loop
Close #Num
Application.ScreenUpdating = True
End Sub
|
|