Чтение онлайн

на главную - закладки

Жанры

VBA для чайников

Каммингс Стив

Шрифт:

Доступ к файлам

Итак, библиотека Microsoft Scripting Runtime установлена, соответствующая ссылка в VBA проект добавлена. Теперь вы готовы приступить к созданию объектно-ориентированного программного кода, обеспечивающего возможность манипуляций с любыми файлами на диске. При работе с файлом как с объектом выполняются следующие действия.

1. Создание FileSystemObject - объекта высшего уровня, обеспечивающего доступ к файлам на диске.

2. Вызов подходящего метода объекта FileSystemObject

для открытия нужного файла или для создания нового файла для использования.

3. Работа с файловым объектом с помощью его методов и свойств.

Практическая реализация этих действий иллюстрируется следующим фрагментом программного кода. В нем сначала создается объект File для файла lacewings.txt, а затем этот файл копируется в другое место на диске:

Dim objFileSystem As FileSystemObject

Dim objTextStreaml As File

Set objFileSystem = _

CreateObject("Scripting.FileSystemObject")

Set objFilel = _

objFileSystem.GetFile("C:\bugs\lacewings.txt")

objFilel.Copy ("C:\Мои документы\buggy.txt")

Работа со свойствами файлов

Имея для работы объект File, несложно получить доступ к содержащейся в файле информации с помощью свойств объекта. Например, с помощью свойства Size можно выяснить размер файла

Dim l ngFileSize As Long

ingFileSize = objFilel.Size

или с помощью свойства DateLastModified узнать, когда файл изменялся последний раз:

Dim dateFileDate As Date

dateFileDate = objFilel.DateLastModified

Копирование, изменение и удаление файлов

С помощью подходящих методов объект File можно скопировать, переместить или удалить:

objFilel.Сору "с:\героические усилия\"

objFilel.Move "с:\минимальные результаты\"

objFile l.Delete

Заметьте, что если вы не меняете имя файла, в операторах, использующих методы Сору и Move, нет необходимости указывать имя, а нужно указать только путь назначения. (Не забудьте в конце имени пути добавить обратную косую черту.) И кстати, объект File сохраняет ассоциацию с перемещенным файлом.

Чтобы копировать, перемещать или удалять группы файлов, используйте методы CopyFile, MoveFile и Delete File объекта FileSystemObject, а не индивидуальный объект File. В спецификациях имен файлов для методов объекта FileSys t emObject можно использовать символы подстановки. Объект File SystemObject имеет еще методы CopyFolder, MoveFolder и DeleteFolder, которые применимы к папкам вместе с вложенными в них структурами.

Чтение и запись данных

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

подход к организации чтения и записи информации.

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

Объекты 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 "Мы - пионеры, дети рабочих."

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

Поделиться:
Популярные книги

#Бояръ-Аниме. Газлайтер. Том 36

Володин Григорий Григорьевич
36. История Телепата
Фантастика:
боевая фантастика
аниме
фэнтези
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 36

Наша навсегда

Зайцева Мария
2. Наша
Любовные романы:
современные любовные романы
эро литература
5.00
рейтинг книги
Наша навсегда

Кодекс Крови. Книга ХVIII

Борзых М.
18. РОС: Кодекс Крови
Фантастика:
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Кодекс Крови. Книга ХVIII

Газлайтер. Том 4

Володин Григорий
4. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 4

Точка Бифуркации III

Смит Дейлор
3. ТБ
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Точка Бифуркации III

Геном хищника. Книга пятая

Гарцевич Евгений Александрович
5. Я - Легенда!
Фантастика:
рпг
фэнтези
попаданцы
6.00
рейтинг книги
Геном хищника. Книга пятая

Вторая жизнь майора. Цикл

Сухинин Владимир Александрович
Вторая жизнь майора
Фантастика:
героическая фантастика
боевая фантастика
попаданцы
5.00
рейтинг книги
Вторая жизнь майора. Цикл

Двойник Короля 4

Скабер Артемий
4. Двойник Короля
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Двойник Короля 4

Черный Маг Императора 6

Герда Александр
6. Черный маг императора
Фантастика:
юмористическое фэнтези
попаданцы
аниме
7.00
рейтинг книги
Черный Маг Императора 6

Наследник

Кулаков Алексей Иванович
1. Рюрикова кровь
Фантастика:
научная фантастика
попаданцы
альтернативная история
8.69
рейтинг книги
Наследник

Инженер Петра Великого 5

Гросов Виктор
5. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
фэнтези
4.75
рейтинг книги
Инженер Петра Великого 5

Хозяин Теней 3

Петров Максим Николаевич
3. Безбожник
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Хозяин Теней 3

Бандит

Щепетнов Евгений Владимирович
1. Петр Синельников
Фантастика:
фэнтези
7.92
рейтинг книги
Бандит

Кодекс Охотника. Книга VI

Винокуров Юрий
6. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга VI