Объектная файловая система

Для работы с файлами и каталогами вместо традиционного способа можно использовать объектную файловую систему, которая реализуется с помощью библиотеки Microsoft Scripting Runtime Library. Чтобы подключить библиотеку в меню Tools выбираем пункт References. В открывшемся окне устанавливаем флажок напротив пункта Microsoft Scripting Runtime.

Объект FileSystemObject

Доступ к файловой системе осуществляется через объект FileSystemObject. Создать объект можно двумя способами:

' Способ 1 (раннее связывание):
Dim fso As New FileSystemObject
' Способ 2 (позднее связывание):
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")

Создание, открытие и закрытие файла

Для создания файла предназначен метод CreateTextFile() объекта FileSystemObject. Метод имеет следующий формат:

CreateTextFile(<Имя файла>[, <Перезапись>[, <Кодировка>]])

В параметре <Имя файла> указывается путь к файлу. Путь может быть абсолютным или относительным. При указании относительного пути полный путь определяется с учетом местоположения текущего рабочего каталога и текущего диска. Если в необязательном параметре <Перезапись> указано значение True (значение по умолчанию), то существующий файл будет перезаписан, а если значение False — то при существовании файла генерируется ошибка. Если в необязательном параметре <Кодировка> указано значение False (значение по умолчанию), то файл создается в кодировке ASCII, а если значение True — то в кодировке Unicode. Метод возвращает объект TextStream, с помощью которого производится дальнейшая работа с файлом, например, с помощью метода Close() можно закрыть файл. Пример создания и закрытия файла:

Dim fso As New FileSystemObject
Dim f As TextStream
Set f = fso.CreateTextFile(ThisWorkbook.Path & "\file1.txt")
' Работаем с файлом
f.Close ' Закрываем файл

Пример создания файла в кодировке UTF-16:

Dim fso As New FileSystemObject
Dim f As TextStream
Set f = fso.CreateTextFile(ThisWorkbook.Path & "\file1.txt", , True)
' Работаем с файлом
f.Close ' Закрываем файл

Метод CreateTextFile() не позволяет указать режим работы с файлом, следовательно его можно использовать только для создания нового файла. Если файл существует, то он будет перезаписан. Если необходимо открыть уже существующий файл без перезаписи, то следует воспользоваться методом OpenTextFile() объекта FileSystemObject. Формат метода:

OpenTextFile(<Имя файла>[, <Режим>[, <Создание>[, <Кодировка>]]])

В параметре <Имя файла> указывается путь к файлу. Необязательный параметр <Режим> задает режим открытия файла:

Если в необязательном параметре <Создание> указано значение True, то файл создается или перезаписывается, а если значение False (значение по умолчанию) — то при отсутствии файла генерируется ошибка. В необязательном параметре <Кодировка> указываются следующие значения:

Метод OpenTextFile() возвращает объект TextStream, с помощью которого производится дальнейшая работа с файлом. Пример создания, открытия и закрытия файла:

Dim fso As New FileSystemObject
Dim f As TextStream
Set f = fso.OpenTextFile(ThisWorkbook.Path & "\file1.txt", _
                         ForWriting, True)
f.Write "Строка" ' Записываем строку в файл
f.Close          ' Закрываем файл

Пример дозаписи строки в файл:

Dim fso As New FileSystemObject
Dim f As TextStream
Set f = fso.OpenTextFile(ThisWorkbook.Path & "\file1.txt", _
                         ForAppending)
f.Write "Новая строка" ' Дозаписываем строку в файл
f.Close                ' Закрываем файл

Пример создания файла в кодировке UTF-16:

Dim fso As New FileSystemObject
Dim f As TextStream
Set f = fso.OpenTextFile(ThisWorkbook.Path & "\file2.txt", _
                         ForWriting, True, TristateTrue)
f.Write "Строка" ' Записываем строку в файл
f.Close          ' Закрываем файл
Предыдущая статья Все статьи Следующая статья