|
すみません。
不覚にも気づかずに提示されたコードをそのまま使ってしまいました。
1部修正して、そのまま同じものを再アップ。
前のコードをそのまま利用すると、
「なぜ私のPCだけ? Why?」ってな事になります。
予約語を変数やプロシジャー名に使うと上記のようなことになったりするし、誤動作する場合があるかもも知れないので止めましょう。
MsgBox ActiveSheet.Name .Nameとならずに.nameになる場合も...。
直し方を知っていたり、気にしなければ良いですけど。
で、修正点
Const name → Const name_1
以下前のまま。
遅い原因は、これ。
Cells(r, 1).Value = strREC
1行読んでは書き込む、と言った感じで1行づつ処理しているからです。
ある程度配列に溜め込んでから書き出すようにすると、現状よりかなり速くなりますよ。
注)
Preserveしながら、1行づつ配列を拡張しても良いですが、1次元配列だから書き込み時にTransposeさせないといけません。
Transposeできる配列の要素数の上限が、5461個までそれ以上になるとエラーになります。
Const name_1 = "C:\test.log"
Dim intFF As Integer ' FreeFile値
Dim r As Long
Dim strREC As String
Dim 配列() As String
intFF = FreeFile
Open name_1 For Input As #intFF
Do Until EOF(intFF)
Line Input #intFF, strREC
r = 1 + r
ReDim Preserve 配列(1 To 1, 1 To r)
配列(1, r) = strREC
Loop
Range("A1").Resize(UBound(配列, 2)).Value = Application.Transpose(配列)
Close #intFF
Erase 配列
他、だいぶ前に書いた奴。
コードが長すぎて、参考にはならないと思いますが。
HTTP://www.vbalab.net/vbaqa/data/excel/log/tree_373.htm#1910
コピペする場合の注意点
HTTP://www.vbalab.net/vbaqa/c-board.cgi?cmd=one;no=1464;id=
>仕事場で使用しているノートPCがあまり高スペックとはいえない為、
>読み込む速度は1度に約5〜6分で最悪フリーズしてしまうこともあります。
現時点(2007/10現在)で、「あまり高スペックとはいえない」となると結構なスペックだと思います。
参考まで、現在のPCスペック10年ぐらい前の K6-2 の500MHz/256MB。
|
|