|
こんにちは。
1例です。
データ行数が何万行もあると、配列使っているほうが余計に遅くなると思います。
(書き込みに時間がかかりフリーズしたみたいにOr本当にフリーズしちゃいます。)
最近のPC性能ぐらいであれば、1つづつ書き込んで行ってもさほど時間は掛からないと思います。
実際、手動と比べて速いのかどうか解りませんが....。
配列使用
Sub hui()
Dim Tbl() As Variant
FileOpen = Application.GetOpenFilename("Excelファイル (*.txt), *.txt")
If FileOpen <> False Then
Open FileOpen For Input As #1
Else
End
End If
Do Until EOF(1)
Line Input #1, Rdata
DataCnt = DataCnt + 1
Loop
Close #1
列数 = 15 '←ここのフィールド数を変えてください。
'マクロでカンマ数を数えても良いんだけど、
'実際のデータを見ていないので...。
ReDim Preserve Tbl(1 To DataCnt, 1 To 1)
Open FileOpen For Input As #1
Do Until EOF(1)
For I = 1 To 列数
Input #1, Rdata
If I = 6 Then '6列目
CNT = CNT + 1
Tbl(CNT, 1) = Rdata
End If
Next
Loop
Close #1
Range("A1:A" & DataCnt).Value = Tbl
Erase Tbl
End Sub
ノーマル
Sub hui2()
Dim Tbl() As Variant
FileOpen = Application.GetOpenFilename("Excelファイル (*.csv;*.txt), *.csv;*.txt")
If FileOpen <> False Then
Open FileOpen For Input As #1
Else
End
End If
Do Until EOF(1)
Line Input #1, Rdata
DataCnt = DataCnt + 1
Loop
Close #1
列数 = 15 '←ここのフィールド数を変えてください。
'マクロでカンマ数を数えても良いんだけど、
'実際のデータを見ていないので...。
ReDim Preserve Tbl(1 To DataCnt, 1 To 1)
Open FileOpen For Input As #1
Do Until EOF(1)
For I = 1 To 列数
Input #1, Rdata
If I = 6 Then '6列目
CNT = CNT + 1
Range("A" & CNT).Value = Rdata
End If
Next
Loop
Close #1
End Sub
|
|