Цей підручник покаже, як писати у текстові файли за допомогою VBA.
Запис у текстовий файл
У наведених нижче кодах використовується FileSystemObject. Для того, щоб ним користуватися, вам потрібно встановити посилання на бібліотеку виконання сценарію VB.
Запис у новий текстовий файл
З CreateTextFile метод FileSystemObject Ви можете створити, а потім додати вміст до текстового файлу:
123456789 | Sub FSOCreateAndWriteToTextFile ()Затемнити FSO як новий FileSystemObjectВстановити FSO = CreateObject ("Scripting.FileSystemObject")Встановіть FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")FileToCreate.Write "тестовий рядок"FileToCreate.CloseEnd Sub |
Зверніть увагу, що вміст не буде включений у лапки.
Запис у існуючий текстовий файл
Для запису до існуючого текстового файлу можна скористатися OpenTextFile метод FileSystemObject з ForWriting режим.
123456789 | Sub FSOWriteToTextFile ()Затемнити FSO як новий FileSystemObjectВстановити FSO = CreateObject ("Scripting.FileSystemObject")Встановіть FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForWriting)FileToWrite.Write "тестовий рядок"FileToWrite.CloseEnd Sub |
Зверніть увагу, що для запису в існуючий текстовий файл не обов’язково потрібен FileSystemObject. Наведений вище приклад іншим чином показаний у цьому коді нижче (див. Інший приклад у розділі Діапазон даних до текстового файлу):
123456789 | Sub WriteToTextFile ()Dim FileName As StringFileName = "C: \ Test \ TestFile.txt"Відкрийте Ім'я файлу для виведення як №1Друк №1, "тестовий рядок"Закрити №1End Sub |
Зверніть увагу, що використання команди "Записати" замість "Друк" призведе до того, що доданий вміст буде укладено в лапки. Маючи обидві команди у вашому макросі
12 | Напишіть №1, "тестовий рядок №1"Друк №1, "тестовий рядок №2" |
призведе до такого текстового файлу:
Програмування VBA | Генератор коду працює для вас!
Додати до текстового файлу
Змінивши режим у наведеному вище коді на ForAppending, можна додати рядок до кінця текстового файлу:
1 | Встановіть FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending) |
Метод WriteLine
Цей метод додає рядок введення окремим рядком до наявного вмісту.
Метод запису
Вхідний рядок додається до того самого рядка, що і наявний вміст.
Втомилися від пошуку прикладів коду VBA? Спробуйте AutoMacro!
WriteBlankLines
Цей метод приймає кількість порожніх рядків, які будуть записані в текстовий файл як параметр.
Цей код нижче ілюструє різницю між різними методами запису:
12345678910111213 | Методи підзапису ()Затемнити FSO як новий FileSystemObjectВстановити FSO = CreateObject ("Scripting.FileSystemObject")Встановіть FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending)FileToWrite.Write "тестовий рядок №1"FileToWrite.Write "тестовий рядок №2"FileToWrite.WriteBlankLines (3)FileToWrite.WriteLine "тестовий рядок №3"FileToWrite.WriteLine "тестовий рядок №4"FileToWrite.CloseEnd Sub |
І результат:
Програмування VBA | Генератор коду працює для вас!
Діапазон даних до текстового файлу
Якщо ви хочете вивести діапазон даних зі свого аркуша у текстовий файл, ви можете скористатися цим кодом:
12345678910111213141516171819 | Sub OutputToTextFile ()Затемнити ім’я файлу як рядок, рядок як рядокDim MyRange As Range, i, jFileName = "C: \ Test \ TestFile.txt" 'тут можна вказати назву текстового файлу, який потрібно створитиВідкрийте Ім'я файлу для виведення як №1Встановити MyRange = Діапазон ("дані") ", це передбачає, що у вас на робочому аркуші є діапазон даних з назвою" дані "Для i = 1 до MyRange.Rows.CountДля j = 1 до MyRange.Columns.CountLineText = IIf (j = 1, "", LineText & ",") & MyRange.Cells (i, j) 'для створення текстового файлу буде роздільник із комамиДалі jДрук #1, LineText 'за допомогою команди Write замість Print призведе до того, що ваші дані будуть у лапках у вихідному текстовому файліДалі iЗакрити №1End Sub |
Масив у текстовий файл
Ви також можете зберегти свій масив даних у текстовий файл таким чином:
12345678910111213141516 | Sub SaveArrayToTextFile ()Dim MyArray як варіантЗатемнити FSO як новий FileSystemObjectВстановити FSO = CreateObject ("Scripting.FileSystemObject")MyArray = Масив (Масив ("00", "01"), Масив ("10", "11"), Масив ("20", "21"))Встановіть FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")Для n = 0 до UBound (MyArray)FileToCreate.WriteLine MyArray (n) (0) & "," & MyArray (n) (1)ДаліFileToCreate.CloseEnd Sub |