Как перезапустить цикл ввода файла - PullRequest
1 голос
/ 11 февраля 2011

У меня есть этот пример кода в VBA:

   iFileNum = FreeFile()
   Open fileLocation For Input As #1
   Do While Not EOF(iFileNum)
     Line Input #iFileNum, sText

   Loop

Как перезапустить iFileNum, чтобы вернуться к началу файла?

Ответы [ 3 ]

3 голосов
/ 12 февраля 2011

Я считаю, что вы можете использовать его:

    If EOF(fileNum) Then
        Seek fileNum, 1
    End If

Команда Seek перемещает указатель в любое место файла ... поэтому 1 перемещает указатель в начало файла.

Тем не менее, ответ Ho1 выше необходимо учитывать.

3 голосов
/ 12 февраля 2011

Объект FileSystemObject может дать вам больше контроля:

''Library: Windows Script Host Object Model
Dim fso, ts
Const ForReading = 1

Set fso = CreateObject("Scripting.FileSystemObject")
Set ts = fso.OpenTextFile("c:\docs\test.txt", ForReading, True)
a = ts.Readall

Debug.Print a
aa = Split(a, vbCrLf)
Debug.Print aa(0)
2 голосов
/ 11 февраля 2011

Если вы имели в виду, что хотите прочитать другой файл, то вы должны закрыть этот файл и открыть другой файл. В противном случае, если вы имеете в виду, что хотите снова прочитать тот же файл, то это то же самое, что вам придется закрыть его и снова открыть.
Однако я бы предложил, чтобы в этом случае вы просто кэшировали содержимое файла в памяти, а не читали его несколько раз (если, конечно, его содержимое не изменилось).

...