Dim fso As New FileSystemObject, fil As File
Set fil = fso.CreateTextFile("c:testfile.txt", True)
Обратите внимание, что модель объекта FSO еще не поддерживает создание произвольных (random) или двоичных (binary) файлов.
Другой путь состоит в том, чтобы использовать метод OpenTextFile объекта FileSystemObject с установкой флага ForWriting:
Dim fso As New FileSystemObject, ts As New TextStream
Set ts = fso.OpenTextFile("c:test.txt", ForWriting)
Или Вы можете использовать метод OpenAsTextStream с установкой флага ForWriting:
Dim fso As New FileSystemObject, fil As File, ts As TextStream
Set fso = CreateObject("Scripting.FileSystemObject")
fso.CreateTextFile ("test1.txt")
Set fil = fso.GetFile("test1.txt")
Set ts = fil.OpenAsTextStream(ForWriting)
Добавление данных к файлу
Как только текстовый файл создан, Вы можете добавлять данные. Для этого необходимо:
Открыть текстовый файл для записи данных.
Записать данные.
Закрыть файл.
Чтобы открыть файл, Вы можете использовать любой из двух методов: метод OpenAsTextStream объекта File или метод OpenTextFile объекта FileSystemObject.
Чтобы записать данные в открытый текстовый файл, используйте методы Write или WriteLine объекта TextStream. Единственое различие между Write и WriteLine - то, что WriteLine добавляет символы newline к концу строки. Если Вы хотите добавлять newline к текстовому файлу, используйте метод WriteBlankLines.
Чтобы закрыть открытый файл, используйте метод Close объекта TextStream.
Sub Create_File()
Dim fso, txtfile
Set fso = CreateObject("Scripting.FileSystemObject")
Set txtfile = fso.CreateTextFile("c:testfile.txt", True)
'Записьлинии
txtfile.Write ("This is a test. ")
'Запись линии с символом newline
txtfile.WriteLine("Testing 1, 2, 3.")
'Запись трех символов newline в файл
txtfile.WriteBlankLines(3)
txtfile.Close
End Sub
Чтениефайлов File System Objects
Чтобы читать данные из текстового файла, используйте методы Read, ReadLine или ReadAll объекта TextStream:
Чтение определенного числа символов из файла - Read
Чтение всей линии (но не, включая, символ newline) - ReadLine
Чтение всего содержания текстового файла - ReadAll
Если Вы используете метод Read или ReadLine, и Вы хотите перейти к специфической части данных, Вы можете использовать метод Skip или SkipLine. Полученный в результате использования этих методов текст может быть сохранен в символьной переменной и анализироваться Left, Right и Mid. Обратите внимание, что константа vbNewLine содержит символ или символы (в зависимости от операционной системы) чтобы продвинуть курсор к началу следующей линии (возврат каретки). Знайте, что концы некоторых символьных переменных могут иметь такие непечатаемые символы.
Sub Read_Files()
Dim fso As New FileSystemObject, txtfile
Dim fil1 As File, ts As TextStream
Set txtfile = fso.CreateTextFile("c:testfile.txt", True)
MsgBox "Writing file"
' Записьлинии
Set fil1 = fso.GetFile("c:testfile.txt")
Set ts = fil1.OpenAsTextStream(ForWriting)
ts.Write "Hello World"
ts.Close
' Чтение содержания файла
Set ts = fil1.OpenAsTextStream(ForReading)
s = ts.ReadLine
MsgBox s
ts.Close
End Sub
Перемещение, копирование и удаление файлов
Модель объекта FSO имеет два метода для перемещения, копирования и удаления файлов:
Переместитефайл - File.Move or FileSystemObject.MoveFile
Копируйтефайл - File.Copy or FileSystemObject.CopyFile
Удалитефайл - File.Delete or FileSystemObject.DeleteFile
Этот пример создает текстовый файл в корневой директории дисковода C, пишет некоторую информацию в нем, перемещает его в каталог, называемый tmp, делает копию его в каталог, называемый temp, затем удаляет копии из обоих каталогов. Чтобы выполнять этот пример, удостоверитесь, что Вы имеете каталоги, именованные tmp и temp в корневой директории дисковода C
Sub Manip_Files()
Dim fso As New FileSystemObject, txtfile, fil1, fil2
Set txtfile = fso.CreateTextFile("c:testfile.txt", True)
MsgBox "Writing file"
txtfile.Write ("This is a test.")
txtfile.Close
MsgBox "Moving file to c:tmp"
' Код обработки файла в корне C:
Set fil1 = fso.GetFile("c:testfile.txt")
' Перемещаем файл в директорию tmp
fil1.Move ("c:tmptestfile.txt")
MsgBox " Копируем файл в c:temp"
' Копируем файл в temp
fil1.Copy ("c:temptestfile.txt")
MsgBox "Удаляемфайлы"
' Код получения текущих дерикторий файлов
Set fil1 = fso.GetFile("c:tmptestfile.txt")
Set fil2 = fso.GetFile("c:temptestfile.txt")
' Удаляемдайлы
fil1.Delete
fil2.Delete
MsgBox "Все!"
End Sub