|
2003年1月ごろの郵政省の郵便番号表「Ken_all.csv」(121333行)で、アバウトな方法で比べてみました。
思ってたより差がでなくて1秒前後ぐらいの差しかないみたいでした。
最初、動いているかどうかも確認したかったので、セルにカウント数を書き込んでたら、遅さにビックリしてしまいました。
結果、私としてはどれでも良いんですが、Runtime使ったりするのは抵抗があるし、INputBで読み込むのは速い事はかなり速いんですが、変換して処理するってのも場合によっては面倒だし、結局は、これで飯食ってるわけでもないので、やっぱりどっちでも良いやって事です。
・普通のLine Input
Pen2.233 96M セルへの書込有 Pen2.233 96M セルへの書込無
70600行 0:02:53 65536行 0:00:04
70600行 0:02:37
Cel750 256M セルへの書込有 Cel750 256M セルへの書込無
65536行 0:02:17 65536行 0:00:01
65536行 0:02:38 65536行 0:00:01
Cel750 256M セルへの書込無
121333行 0:00:02
・INputB_Instr
Pen2.233 96M セルへの書込有 Pen2 233 96M セルへの書込無
70600行 0:02:41 65536行 0:00:05
70600行 0:02:42 65536行 0:00:02
Cel750 256M セルへの書込有 Cel750 256M セルへの書込無
65536行 0:02:38 65536行 0:00:01
65536行 0:02:37 65536行 0:00:01
・FSO仕様
Pen2.233 96M Cel750 256M Cel750 256M
70600行 0:00:03 65536行 0:00:01 121333行 0:00:02
Pen2 233 96M
65536行 0:00:03
65536行 0:00:02
---------------------------------------
Sub 普通のInput()
オープンファイル = Application.GetOpenFilename("Excelファイル (*.csv;*.txt), *.csv;*.txt")
STime = Now()
If オープンファイル <> False Then
拡張子 = StrConv(Right(オープンファイル, 3), vbUpperCase)
Open オープンファイル For Input As #1
Else
End
End If
Do Until EOF(1)
Line Input #1, ReadDete
CSV全データ行数 = CSV全データ行数 + 1
'Range("A5").Value = CSV全データ行数 'これがあると無いとの比較もしてみてください。
Loop
Close #1
Range("A5").Value = CSV全データ行数
Range("B5").Value = Format(STime - Now(), "hh:mm:ss")
MsgBox Format(STime - Now(), "hh:mm:ss") & vbLf & CSV全データ行数
End Sub
Sub INPUTB_inStr()
Dim RDM As String, RDM2 As String, RDM3 As String, CSV全データ行数 As Long
オープンファイル = Application.GetOpenFilename("Excelファイル (*.csv;*.txt), *.csv;*.txt")
STime = Now()
If オープンファイル <> False Then
Open オープンファイル For Input As #1
Else
End
End If
RDM = InputB(LOF(1), #1)
Close #1
RDM = StrConv(RDM, vbUnicode) '無いとまともな文字でない。
i = 1
Do
CC = InStr(i, RDM, vbLf)
If CC <> 0 Then
CSV全データ行数 = CSV全データ行数 + 1
'Range("A9").Value = CSV全データ行数 'これがあると無いとの比較もしてみてください。
On Error Resume Next
i = CC + 1
End If
Loop Until CC = 0 Or Err
Range("A9").Value = CSV全データ行数
Range("B9").Value = Format(STime - Now(), "hh:mm:ss")
MsgBox Format(STime - Now(), "hh:mm:ss") & vbLf & CSV全データ行数
End Sub
【参照設定】 Microsoft Scripting Runtime のチェック必要
Sub FSO仕様()
Dim Fso As New Scripting.FileSystemObject
Dim オープンファイル As String
オープンファイル = Application.GetOpenFilename("Excelファイル (*.csv;*.txt), *.csv;*.txt")
If オープンファイル = "False" Then
End
End If
ST = Now()
With Fso.OpenTextFile(Filename:=オープンファイル, IOMode:=ForReading)
Do Until .AtEndOfLine
.SkipLine
Loop
FSC = .Line - 1
End With
Range("A12").Value = FSC
Range("B12").Value = Format(ST - Now(), "hh:mm:ss")
MsgBox Format(ST - Now(), "hh:mm:ss") & vbLf & CSV全データ行数
End Sub
|
|