В этом руководстве будет показано, как писать в текстовые файлы с помощью VBA.
Запись в текстовый файл
В приведенных ниже кодах используется FileSystemObject. Чтобы использовать его, вам нужно будет установить ссылку на библиотеку времени выполнения сценария VB.
Записать в новый текстовый файл
С CreateTextFile метод FileSystemObject вы можете создать, а затем добавить контент в текстовый файл:
123456789 | Подложка FSOCreateAndWriteToTextFile ()Dim FSO как новый объект FileSystemObjectУстановите FSO = CreateObject ("Scripting.FileSystemObject")Установите FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")FileToCreate.Write "тестовая строка"FileToCreate.CloseКонец подписки |
Обратите внимание, что содержимое не будет заключаться в кавычки.
Запись в существующий текстовый файл
Для записи в существующий текстовый файл вы можете использовать OpenTextFile метод FileSystemObject с участием Для записи режим.
123456789 | Подложка FSOWriteToTextFile ()Dim FSO как новый объект FileSystemObjectУстановите FSO = CreateObject ("Scripting.FileSystemObject")Установите FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForWriting)FileToWrite.Write "тестовая строка"FileToWrite.CloseКонец подписки |
Обратите внимание, что для записи в существующий текстовый файл не обязательно, чтобы FileSystemObject. Приведенный выше пример показан другим способом в этом коде ниже (см. Другой пример в разделе «Диапазон данных в текстовый файл»):
123456789 | Sub WriteToTextFile ()Уменьшить имя файла как строкуFileName = "C: \ Test \ TestFile.txt"Открыть имя файла для вывода как # 1Печать №1, "тестовая строка"Закрыть # 1Конец подписки |
Обратите внимание, что использование команды «Запись» вместо «Печать» приведет к заключению добавленного содержимого в кавычки. Наличие обеих команд в вашем макросе
12 | Напишите # 1, "тестовая строка # 1".Распечатайте # 1, "тестовая строка # 2" |
приведет к текстовому файлу, подобному этому:
Программирование на VBA | Генератор кода действительно работает для вас!
Добавить в текстовый файл
Изменив режим в приведенном выше коде на ForAppending, можно добавить строку в конец текстового файла:
1 | Установите FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending) |
WriteLine метод
Этот метод добавляет строку ввода отдельной строкой к существующему содержимому.
Метод записи
Входная строка добавляется к той же строке, что и существующее содержимое.
Устали искать примеры кода VBA? Попробуйте AutoMacro!
WriteBlankLines
Этот метод принимает количество пустых строк, которые должны быть записаны в текстовый файл в качестве параметра.
Этот код ниже иллюстрирует разницу между различными методами записи:
12345678910111213 | Sub WriteMethods ()Dim 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.CloseКонец подписки |
И результат:
Программирование на VBA | Генератор кода действительно работает для вас!
Диапазон данных в текстовый файл
Если вы хотите вывести диапазон данных из рабочего листа в текстовый файл, вы можете использовать этот код:
12345678910111213141516171819 | Подложка OutputToTextFile ()Dim FileName as String, LineText as StringDim MyRange As Range, i, jFileName = "C: \ Test \ TestFile.txt" 'вы можете указать здесь имя текстового файла, который вы хотите создатьОткрыть имя файла для вывода как # 1Установите MyRange = Range ("data") ', предполагается, что у вас есть диапазон данных с именем "data" на вашем листе.Для i = 1 To MyRange.Rows.CountДля j = 1 To MyRange.Columns.CountLineText = IIf (j = 1, "", LineText & ",") & MyRange.Cells (i, j) 'создаваемый текстовый файл будет иметь разделитель запятой.Следующий jPrint # 1, LineText 'с использованием команды Write вместо Print приведет к тому, что ваши данные будут заключены в кавычки в выходном текстовом файле.Далее яЗакрыть # 1Конец подписки |
Массив в текстовый файл
Вы также можете сохранить свой массив данных в текстовый файл следующим образом:
12345678910111213141516 | Подложка SaveArrayToTextFile ()Dim MyArray как вариантDim 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.CloseКонец подписки |