Този урок ще покаже как да пишете в текстови файлове с помощта на VBA.
Пишете в текстов файл
Кодовете по -долу използват FileSystemObject. За да го използвате, ще трябва да зададете препратка към библиотеката по време на изпълнение на VB скрипта.
Пишете в нов текстов файл
С CreateTextFile метод на FileSystemObject можете да създадете и след това да добавите съдържание към текстов файл:
123456789 | Под 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"Отворете FileName за извеждане като #1Печат #1, "тестова линия"Затворете #1End Sub |
Моля, обърнете внимание, че използването на команда Write вместо Print ще доведе до добавяне на съдържание, оградено с кавички. Имат и двете команди във вашия макрос
12 | Напишете #1, "тест ред #1"Отпечатайте #1, "тестова линия #2" |
ще доведе до текстов файл като този:
VBA програмиране | Code Generator работи за вас!
Добавяне към текстов файл
Чрез промяна на режима в горния код на ForAppending може да се добави ред в края на текстовия файл:
1 | Задайте FileToWrite = FSO.OpenTextFile ("C: \ Test \ TestFile.txt", ForAppending) |
Метод WriteLine
Този метод добавя входния низ като отделен ред към съществуващото съдържание.
Метод на писане
Входният низ е добавен на същия ред като съществуващото съдържание.
Уморени ли сте от търсене на примери за VBA код? Опитайте AutoMacro!
WriteBlankLines
Този метод приема броя на празните редове, които трябва да бъдат записани в текстовия файл като параметър.
Този код по -долу илюстрира разликата между различните методи на запис:
12345678910111213 | Sub WriteMethods ()Затъмнете 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 програмиране | Code Generator работи за вас!
Обхват на данни до текстов файл
Ако искате да изведете диапазон от данни от работния си лист в текстов файл, можете да използвате този код:
12345678910111213141516171819 | Sub OutputToTextFile ()Dim FileName As String, LineText As StringDim MyRange As Range, i, jFileName = "C: \ Test \ TestFile.txt" 'можете да посочите тук името на текстовия файл, който искате да създадетеОтворете FileName за извеждане като #1Задайте MyRange = Диапазон ("данни") ", предполага, че имате диапазон от данни, наречен" данни "на вашия работен листЗа i = 1 към MyRange.Rows.CountЗа j = 1 Към MyRange.Columns.CountLineText = IIf (j = 1, "", LineText & ",") & MyRange.Cells (i, j) 'създаващият текстов файл ще има разделител на запетаяСледващ jPrint #1, LineText ', използвайки команда Write вместо Print, ще доведе до това, че вашите данни са в кавички в изходния текстов файлСледва iЗатворете #1End Sub |
Масив към текстов файл
Можете също да запишете вашия масив от данни в текстов файл по следния начин:
12345678910111213141516 | Sub SaveArrayToTextFile ()Dim MyArray като вариантЗатъмнете FSO като нов FileSystemObjectЗадайте FSO = CreateObject ("Scripting.FileSystemObject")MyArray = Array (Array ("00", "01"), Array ("10", "11"), Array ("20", "21"))Задайте FileToCreate = FSO.CreateTextFile ("C: \ Test \ TestFile.txt")За n = 0 Към UBound (MyArray)FileToCreate.WriteLine MyArray (n) (0) & "," & MyArray (n) (1)СледващияFileToCreate.CloseEnd Sub |