Відкриття об’єктів текстових потоків

Ця книга допоможе освоїти інтегроване середовище розробки VBA та навчитися програмувати у VBA з використання об'єктів, їх властивостей, методів та подій. Обговорювані прийоми програмування ілюструються прикладами, які можна відразу випробувати практично. Отримані знання ви зможете застосувати як для налаштування та вдосконалення популярних офісних програм, включаючи програми Office XP, так і для створення власних програм.
Книга розрахована на тих, хто збирається швидко та без зайвих зусиль навчитися програмувати для Windows, використовуючи VBA.
VBA для чайників
Відкриття об'єктів текстових потоків
Відкриття об'єктів текстових потоків
* Відкрити існуючий об'єкт File як текстового потоку.
* Створити новий файл та одночасно відкрити його як текстовий потік.
* Відкрити існуючий на диску файл як текстовий потік.
У наступному прикладі процедури цими трьома способами у зазначеному порядку відкриваються три окремі об'єкти Text Stream, потім в один із цих об'єктів записуються дані, і об'єкти закриваються:
Dim objFileSystem As FileSystemObject
Dim objFilel As File
Dim objTextStreaml As TextStream
Dim objTextStream2 As TextStream
Dim objTextStream3 As TextStream
Set ObjFileSystem = _
' Створення об'єкта File та використання його для створення об'єкта текстового потоку
Set ObjFilel = _
Set objTextStreaml = _
' Створення файлу та відкриття його як об'єкта _
Set objTextStream2 = _
' Відкриття існуючого файлу як _
Set objTextStream3 = _
' Запис двох рядків тексту в один із потоків
"Звійтесь багаттями, сині ночі!"
objTextStream2.WriteLine "Ми -піонери, діти робітників.
' Закриття всіх трьох текстових потоків
Доступні для кожного конкретного об'єкта Text Stream режими залежать від того, яким способом створено текстовий потік, а у разі методу OpenAsText Stream об'єкта File - від вказаного режиму. Ось відповідне зведення.
Доступні режими введення-виводу для певного текстового об'єкта
Create Text File (об'єкт FileSystemObject)
Читання та запис
Open Text File (об'єкт ileSystemObject)
Читання та додавання
Open As Text Stream (об'єкт File)
Читання, запис або додавання (тільки один із режимів)
Коли об'єкт Text Stream створюється з об'єкта File, режим введення-виведення задається як аргумент методу OpenAsText Stream за допомогою трьох відповідних чином названих констант: For Reading (для читання), For Writing (для запису) та ForAppending (для додавання). Наприклад, якщо потрібно додати текст до кінця існуючого файлу, відкрийте текстовий потік за допомогою наступного оператора:
Set objTS = objFile.OpenAsTextStreamfForAppending)
Відкривши об'єкт Text Stream у відповідному режимі доступу, можна розпочати роботу з вмістом файлу. У вашому розпорядженні є кілька простих методів.
' читання наступного рядка з файлу до змінної
str ДеякийТекст = Text Stream.ReadLine
Для читання передбачені такі способи.
Метод (об'єкта Text Stream)
Читання заданого числа символів, починаючи з поточної позиції у файлі
Читання всіх символів, починаючи з поточної позиції у файлі, до наступного символу переходу на новий рядок
Читання всього файлу
Пропуск заданої кількості символів під час читання файлу. Наступне читання має розпочатися з першого із символів,пропущеними
Пропустити наступний рядок у файлі. Наступне читання має розпочатися з першого із символів, що йдуть за пропущеним рядком
Щоб записати дані в текстовий потік, задайте текст для запису у вигляді рядка як аргумент методу Write або WriteLine, як у наведеному нижче прикладі:
objTextStream.Write "Алло, центральна!"
' запис значення змінної з наступним символом
' переходу на новий рядок
Метод (об'єкта TextStream)
Запис до текстового потоку вказаного рядка
Запис до текстового потоку вказаного рядка з наступним символом переходу на новий рядок
Запис до текстового потоку вказаної кількості символів переходу на новий рядок
Завершивши читання текстового потоку або запис у текстовий потік, завжди закривайте об'єкт Text Stream, щоб звільнити системні ресурси та пам'ять та щоб інші програми та користувачі змогли отримати доступ до відповідного файлу. Тут потрібен метод Close:
Текстові потоки хороші для читання та запису щодо невеликих за обсягом порцій даних. Основна проблема полягає в тому, що не можна вільно переміщатись усередині текстового потоку. Методи читання починають читання даних із початку файлу і читають його остаточно. І хоча при читанні можна використовувати методи Skip і Ski pLine, щоб перестрибнути задану кількість символів або рядків, у зворотному напрямку не можна перескакувати - виконання оператора типу objText Stream. Skip (-10) викликає помилку. на жаль, об'єкти Text Stream не мають методів або властивостей, що дозволяють прямо встановити стартову позицію для наступного читання. Однак приблизно те саме можна зробити по-іншому. Спочатку потрібно закрити та знову відкрити текстовий потік, а потім за допомогою методу Skip пропустити на одну позицію менше ніж номернеобхідної позиції. Наприклад, якщо ви хочете прочитати 25 символів, починаючи з 5-го символу у файлі, відповідне завдання виконають наступні оператори:
Set objTextStream = bjFile.OpenAsTextStream(ForWriting)
При записі даних у текстові потоки ви ще більше обмежені, ніж під час читання, оскільки взагалі допускаються пропуски у файлі. Кожна наступна операція запису починається там, де закінчилася попередня, і при цьому листується будь-який текст, який може опинитися на відповідних позиціях у файлі.
Тому, якщо вам потрібно внести в якомусь місці файлу деякі зміни, не торкаючись при цьому решти тексту, прочитайте весь вміст файлу в рядок, відповідним чином змініть його, а потім замініть усі дані у файлі новими даними.