Режим доступа к файлу в операторе Open | Описание работы | Ключевые слова |
Произвольный доступ | Сохраняет данные в записях идентичной длины, так что чтение или запись могут вестись до тех пор, пока известно положение в файле, Запись в режиме произвольного доступа соответствует любому типу данных VBA фиксированной длины или определенному пользователем типу, содержащему исключительно типы данных фиксированной длины | Random |
Последовательный | Данные сохраняются в виде серии символов. Подходит для текстовых файлов, а также для файлов баз данных в кодировке ASCII, использующих разделители-запятые | Input (для чтения данных из файла); Out put (для записи данных в файл); Append (для записи данных в конец файла) |
Двоичный | Данные сохраняются в строчной форме, в любом заданном порядке | Binary |
Не идите на поводу у номеров
Хотя в VBA рекомендуется обращаться к открытым файлам по номеру, запоминать то, с чем связаны какие-то числа, достаточно трудно и неудобно. Вместо номеров файлов можно использовать константы или переменные с понятным названием. Если наперед известен номер, который будет использоваться для отдельного файла, объявите для него константу. Данную константу затем можно использовать в операторе, воздействующем на файл. Вот пример:
Const PetsFile = 1, BdayFile = 2
Open "C:\MiscData\PetsLog.txt" For Input As PetsFile
Open "C:\MiscData\Birthdays.txt" For Random As BdayFile
Input #PetsFile, strPetlnfo ‘ чтение одного элемента из файла
Close PetsFile
Put BdayFile, 45, usrBDay ' запись одного элемента в файл
CloseBdayFile
Применяйте данный прием без опасения: вместо того чтобы собственноручно присваивать файлам номера, используйте функцию FreeFile, определяющую следующий доступный номер файла. Если значение, возвращаемое функцией, присвоить переменной, необходимость в запоминании номера просто отпадет. Вот пример применения данного приема: Dim DiaryFile As Integer DiaryFile = FreeFile () Open
"C:\MySecrets\Diary.txt" For Input As DiaryFile
Закрытие открытых файлов
Будьте аккуратными - после того как работа с файлами завершена, их следует закрыть.
Закрытие файла гарантирует, что все хранимые в памяти изменения действительно будут записаны на диск, а ресурсы, занимаемые файлами, освободятся и станут доступными для других приложений.
Для выполнения подобной задачи нужен, конечно же, оператор Close. Для закрытия определенного файла используется оператор вроде Close #2 (или Close PetsFile, как в предыдущем примере). Для закрытия всех открытых файлов оператор Close используется сам по себе.
Чтение и запись данных
Есть несколько VBA-команд для записи и извлечения данных из файла. В приведенной ниже таблице описана их работа.