MEMORY缓冲txt

时间:2013-08-20 12:37:27

标签: excel-vba vb6 vba excel

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.

1 个答案:

答案 0 :(得分: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
相关问题