Кроме копирования, перемещения и удаления файлов, вас, возможно, заинтересуют и данные, хранящиеся внутри файлов. В этом разделе обсуждается объектно-ориентированный подход к организации чтения и записи информации.

Объекты, относящиеся к файлам, можно использовать для организации доступа к содержимому файла только как к непрерывному блоку текста. Конечно, этот текст может содержать и числовые данные, ведь ничто не заставляет вас хранить и читать только имена, прозу и поэзию. Но доступ к файлу может быть только последовательным - нельзя произвольно перескакивать с одного места в файле на другое.

Объекты File не обеспечивают средства для работы со структурированными данными, как в простых базах данных. В структурированных файлах каждая запись занимает заранее определенное пространство, что позволяет считывать и записывать записи просто по их номерам. В VBA можно обеспечить и такой случайный метод доступа, но не с помощью объектов, а используя операторы VBA, такие как Open, Put и Get.

Открытие объектов текстовых потоков

Чтобы читать данные из файла или записывать их в файл, сначала нужно открыть файл как текстовый поток. В программном коде работа с текстовым потоком означает работу с объектом Text Stream. Начать эту работу можно одним из следующих трех способов.

* Открыть существующий объект File в режиме текстового потока.

* Создать новый файл и одновременно открыть его как текстовый поток.

* Открыть существующий на диске файл как текстовый поток.

В следующем примере процедуры этими тремя способами в указанном порядке открываются три отдельных объекта Text Stream, затем в один из этих объектов записываются данные, и объекты закрываются:

Sub TextStreamDemo()

Dim objFileSystem As FileSystemObject

Dim objFilel As File

Dim objTextStreaml As TextStream

Dim objTextStream2 As TextStream

Dim objTextStream3 As TextStream

Set ObjFileSystem = _

CreateObject("Scripting.FileSystemObject")

' Создание объекта File и использование его для создания объекта текстового потока

Set ObjFilel = _

objFileSystem.GetFile("С:СуществующийФайл.txt"]

Set objTextStreaml = _

objFilel.OpenAsTextStream(ForReading)

' Создание файла и открытие его как объекта _

' текстового потока

Set objTextStream2 = _

objFileSystem.CreateTextFile("C:Новый файл.txt")

' Открытие существующего файла как _

' текстовый поток

Set objTextStream3 = _

objFileSystem.OpenTextFile("C:Старыйфайл.txt")

' Запись двух строк текста в один из потоков

objTextStream2.WriteLine _

"Взвейтесь кострами, синие ночи!"

objTextStream2.WriteLine "Мы - пионеры, дети рабочих."

' Закрытие всех трех текстовых потоков

objTextStreaml.Close

objTextstream2.Close

objTextStream3.Close

End Sub

Хотя во всех трех случаях создаются объекты Text Stream, они не взаимозаменяемы. От выбранного в каждом конкретном случае способа зависит и способ доступа к данным в соответствующем файле. Подробнее об этом говорится в следующем разделе.

Каждый конкретный объект Text Stream позволяет либо читать данные из файла, либо записывать данные в файл, либо и то, и другое. Объект Text Stream позволяет выбрать для него один или несколько из трех режимов ввода-вывода. Один из этих режимов только для чтения, и есть два разных режима для записи - обычная запись (когда предполагается запись символов с самого начала текстового потока) и добавление (когда предполагается добавление символов в конец текстового потока).

Доступные для каждого конкретного объекта Text Stream режимы зависят от того, каким способом создан текстовый поток, а в случае метода OpenAsText Stream объекта File - от указанного для него режима. Вот соответствующая сводка.

Метод

Доступные режимы ввода-вывода для определенного объекта текстового потока

Create Text File (объект FileSystemObject)

Чтение и запись

Open Text File (объект ileSystemObject )

Чтение и добавление

Open As Text Stream (объект File )

Чтение, запись или добавление (только один из режимов)

Вы читаете VBA для чайников
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату