0
Sub DUE()

    Dim strBuffer As String
    Dim strContents() As String
    Dim I As Long

    ReDim strContents(0)
    Erase strContents()

    Close #1
    Open "C:\TEST\28-06-2013.TXT" For Input As #1
    strBuffer = Input(LOF(1), 1)
    Close #1

    strContents = Split(strBuffer, vbCrLf)

    For I = LBound(strContents) To UBound(strContents)
        'Debug.Print strContents(I)
    Next I

End Sub

メモリ不足の問題!!!!

txt ファイルをバッファリングするとき。約 256 mb 1.500.xxx 行です。各行の長さは 132 に固定されています。

4

1 に答える 1

1

Line Input代わりに使用することをお勧めします。

Sub DUE()
    Dim I As Long
    Dim strContents() As String
    Open "C:\TEST\28-06-2013.TXT" For Input As #1
        Do Until EOF(1)
            Redim Preserve strContents(i)
            Line Input #1, strContents(i)
            'Debug.Print strContents(i)
            I = I + 1
        Loop
    Close #1
End Sub

その後、 から各行にアクセスできますstrContents

また、注目に値する:

ReDim strContents(0)
Erase strContents()

それはあまり適切ではありません。代わりに私の行を使用してください:

Dim strContents() As String

編集:

または、さらに良いことに、次のように、各行で必要なことを行い、内部strContentsに保存する必要はありません。

Sub DUE()
    Dim S As String
    Open "C:\TEST\28-06-2013.TXT" For Input As #1
        Do Until EOF(1)
            Line Input #1, S
            'Debug.Print S
        Loop
    Close #1
End Sub
于 2013-08-20T13:28:44.453 に答える