Вывод данных из файла последовательного доступа

В VBA имеются следующие инструкции и функции вывода информации из файла последовательного доступа, а также функцию идентификации конца файла.

Input # Считывает данные из открытого файла последовательного доступа и присваивает их переменным. Данные, считываемые с помощью инструкции Input #, обычно записываются в файл с помощью инструкции Write #. Синтаксис:

 

Input #НомерФайла, СписокПеременных

 

НомерФайла – номер файла

СписокПеременных – список переменных, следует присвоить значения, считанные из файла. Переменные в списке разделяются запятыми.

 

Line Input # Считывает строку из открытого файла последовательного доступа и присваивает ее переменной типа String. Дан­ные, считываемые с помощью инструкции Line Input #, как правило, записываются в файл с помощью инструкции Print #. Синтаксис:

 

Line Input #НомерФайла, ИмяПеременной

 

Синтаксис инструкции Line Input # содержит следующие элементы:

НомерФайла – номер файла;

ИмяПеременной – имя переменной типа Variant или String.

 

Функция EOF – Функция возвращает значение True при достижении кон­ца файла. Синтаксис:

 

EOF(НомерФайла)

 

При последовательном считывании информации из файла часто используется следующий цикл:

 

Do While Not EOF(l) Loop

 

или, для тех пользователей, кто предпочитает инструкцию

 

While - Wend инструкции Do While - Loop, следующий эквивалентный цикл:

 

While Not EOF(l) Wend

 

Функция Input – возвращает значение типа String, содержащее символы из файла, открытого в режиме Input или Binary. Функция Input считывает данные, записываемые в файл с помощью инструкции Print # или Put. Синтаксис:

 

Input(Число, [#]НомерФайла)

 

Число задает число возвращаемых символов. Если аргумент число равен 1, то производится посимвольное считывание данных.

Приведем пример использования инструкции Input # для считывания данных из файла. В этом примере предполагается, что на диске существует файл ГруппаЭкономистов, содержащий информацию о студентах. Файл был создан при помощи инструкции Write # и состоит из двух столбцов, в первом из которых указывается фамилия, а во втором – оценка студента. Для удобства работы с информацией введен пользовательский тип Студенты. Процедура ПримерИспользованияInput последовательно считывает фамилии и оценки из файла и выводит их в ячейки первого и второго столбца рабочего листа.

 

Type Студенты

Фамилия As String * 20

Оценка As String * 3

End Type

Sub ПримерИспользованияInput

Dim Студент As Студенты

Open "ГруппаЭкономистов" For Input As #2

i = 1

Do While Not EOF(2) With Студент

Input #2, .Фамилия, .Оценка

Cells (i, 1).Value = .Фамилия

Cells(i, 2).Value = .Оценка

End With

i = i + 1

Loop

Close #2

End Sub

 

Приведем пример использования инструкции Line Input # для считывания данных из файла ГруппаЭкономистов, имеющего ту же структуру, что и в предыдущем примере, но созданного с помощью инструкции Print #. Инструкция Line input # считывает всю строку из файла в строковую переменную. Поэтому в этом случае уже нет необходимости использовать введенный пользовательский тип, а достаточно ограничиться только обычной строковой переменной. Вся считываемая информация строка за строкой вводится список диалогового окна.

 

Private Sub UserForm_Initialize()

Dim Студент As String

Open "ГруппаЭкономистов" For Input As #1

i = 1

With ListBoxl

.Clear

Do While Not EOF(1)

Line Input #1, Студент

.AddItem Студент

i = i + 1

Loop

Close #1

End With

End Sub