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

Для работы с файлами и каталогами вместо традиционного способа можно использовать объектную файловую систему, которая реализуется с помощью библиотеки 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(<Имя файла>[, <Режим>[, <Создание>[, <Кодировка>]]])

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

  • ForReading — чтение (значение по умолчанию). Указатель устанавливается на начало файла;
  • ForWriting — запись. Содержимое файла удаляется. Указатель устанавливается на начало файла;
  • ForAppending — добавление. Содержимое файла не удаляется. Указатель устанавливается на конец файла.

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

  • TristateFalse — 0 — кодировка ASCII (значение по умолчанию);
  • TristateTrue — -1 — кодировка Unicode;
  • TristateUseDefault — TristateMixed — -2 — кодировка, используемая в системе по умолчанию.

Метод 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          ' Закрываем файл

Visual Basic for Applications (VBA)
Самоучитель по VBA

Помощь сайту

Yandex-деньги: 410011140483022

ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов

Поиск по сайту в Яндексе