VBA допустима работа с тремя типами текстовых файлов.
Файл последовательного доступа
Рассматривается как последовательность строк произвольной длины, разделенных специальными символами. Чтение и запись в файл производится построчно
Файл произвольного доступа
Состоит из записей фиксированной длины и размер записи указывается при его открытии. Это позволяет локализовать любую запись в файле по ее номеру
Бинарный файл
Является частным случаем файла произвольного доступа. Размер записи в бинарном файле считается равным 1 байту
Обсудим инструкции, связанные с открытием файла для операций ввода/вывода, а также с закрытием файла по завершению работы с ним.
Open
Разрешает выполнение операций ввода/вывода при работе с файлом. Синтаксис:
Open Путь For Режим [Access Доступ] [Блокировка] _
As [#]НомерФайла [Lеп=Длина]
- Путь — строковое выражение, указывающее имя файла
- Режим — устанавливает режим работы с файлом. Допусти-
мые значения: Append, Binary, Input, Output или Random
- Доступ — устанавливает операции, разрешенные с открытым файлом. Допустимые значения: Read, write или Read write
- Блокировка — устанавливает операции, разрешенные с открытым файлом другим процессам. Допустимые значения:
Shared, Lock Read, Lock Write и Lock Read Write
- НомерФайла — допустимый номер файла. Число в интервале от 1 до 255. Обратите внимание на то, что параметру НомерФайла предшествует символ #. Значение НомерФайла нельзя изменять, пока файл открыт. Но при следующем открытии файла НомерФайла может быть другим числом
- Длина — число, меньшее либо равное 32 767 (байт). Для файлов, открытых в режиме Random, это значение является длиной записи. Для файлов с последовательным доступом это значение является числом буферизуемых символов
Close
Про инструкцию open важно также знать, что во время ее работы VBA также резервирует файловый буфер в памяти компьютера для ускорения процесса записи и считывания (прямое записывание информации на диск может существенно замедлить выполнение программы, что особенно заметно при работе с большими файлами). Максимальное число файловых буферов устанавливается в системном файле Config.sys
Завершает операции ввода/вывода с файлом, открытым с помощью инструкции open. Эта инструкция очищает буфер и указывает операционной системе обновить FAT (таблицу размещения файлов). Важно, чтобы каждый файл по завершении работы с ним был закрыт, иначе это может привести к частичной потере информации.
Синтаксис:
Close [СписокНомеровФайлов]
Аргумент СписокНомеровФайлов может представлять один или несколько номеров файлов. При этом используется следующий синтаксис, где НомерФайла представляет любой допустимый номер файла:
[[#]НомерФайла] [, [#]НомерФайла] ...
FreeFile
Функция возвращает доступный номер, который может использоваться в инструкции Open
Приведем пример инструкции, открывающей для записи бинарный файл первый из рабочей папки, и затем инструкции, закрывающей этот бинарный файл.