这段代码有效,但如何?

时间:2010-09-15 13:54:15

标签: vba

我刚刚编写了这个函数来从一个以换行符分隔的文本文件中读取一系列电子邮件地址。 确实有用,但这不是我的问题。

Function GetEmailArray(FileName As String) As String()
    Dim TempArr() As String
    Dim i As Integer

    Open FileName For Input Access Read As #1
    Do While Not (EOF(1))
        i = i + 1
        ReDim Preserve TempArr(i + 1)
        Line Input #1, TempArr(i + 1)
        Debug.Print TempArr(i + 1)
    Loop
    Close #1
    GetEmailArray = TempArr
End Function

读这篇文章,我希望如此:

  1. 阅读第一行,将其存储在TempArr(1)
  2. 循环
  3. 阅读第一行AGAIN,将其存储在TempArr(2)
  4. 循环
  5. 我无法弄清楚while循环如何进入文本文件中的下一行。

4 个答案:

答案 0 :(得分:2)

您从调用Open的点开始持有该文件的句柄(#1),直至您拨打Close。在幕后(在O / S级别),句柄保留当前文件位置作为文件描述符的一部分。

答案 1 :(得分:2)

您的第3步应该是:

3.从文件中读取下一行到TempArr(i + 1)

所以你不再读第一行,line input语句读取行,并将文件位置放在下一行。

答案 2 :(得分:1)

我相信魔法正在Line Input #1, TempArr(i+1)发生。它从文件句柄#1读取到TempArr(i+1)。当它到达文件末尾时,EOF(1)将评估为true并终止while循环。系统如何知道下一行是哪一行?这是通过Line Input为您处理的。

答案 3 :(得分:0)

线路输入功能正在改变当前线路。相当俗气的东西。