Вывод данных из файла последовательного доступа
В 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