|
こんにちは。
CSVファイルをWorkbooks.Openで開くと信じられないぐらい遅いのは有名です。
TextをWorkbooks.OpenTextで、開いた方が速いです。
また、文字列をG/標準で読み込むとちょっと遅くなります。(特に日本語)
単純に全部文字列として読み込んだほうが速いことは速いです。
下記コードは、単純にカンマの数でフィールド数を決めていますから、
↓ こんなのはダメです。
"あああ","20,000",100
フィールド数が固定されているなら、下記コード中のCtに直接数字を入れてください。
[#5244]とか、他CSV、Text等で探せば色々サンプルがあると思います。
Sub OpenTextFile()
Dim OpenFile As Variant, ReadDete As String, MyFildInf() As Variant
Dim i As Long, Ct As Long
OpenFile = Application.GetOpenFilename("TEXTのみ(*.txt), *.txt", , "TEXTのみCSVだと極端に遅い")
If OpenFile = False Then End
Open OpenFile For Input As #1
Line Input #1, ReadDete
Close #1
'カンマの数を数える
For i = 1 To Len(ReadDete)
If Mid(ReadDete, i, 1) = "," Then
Ct = Ct + 1
End If
Next
Ct = Ct + 1
ReDim MyFildInf(1 To Ct)
For i = 1 To Ct
MyFildInf(i) = Array(i, 2) '全部文字列で読み込む
Next
STime = Now
Workbooks.OpenText FileName:=OpenFile, _
DataType:=xlDelimited, Comma:=True, FieldInfo:=MyFildInf
Erase MyFildInf
MsgBox Format(Now() - STime, "hh:mm:ss")
End Sub
|
|