Объект FileSystemObject, предоставляющий в VBA Excel доступ к файловой системе компьютера. Создание экземпляра FileSystemObject и его методы. Примеры.
Объект FileSystemObject
Объект FileSystemObject обеспечивает в коде VBA Excel следующие возможности:
- Проверка существования диска, папки или файла.
- Создание новой папки.
- Создание текстового файла и предоставление последовательного доступа для записи.
- Открытие текстового файла и предоставление последовательного доступа для записи или чтения.
- Копирование, перемещение и удаление папок и файлов.
- Работа с путями к папкам и файлам.
- Возвращение имен дисков, папок и файлов.
Создание, свойство, методы
Создание экземпляра FileSystemObject
Создать новый экземпляр объекта FileSystemObject можно с помощью раннего или позднего связывания.
Раннее связывание
В одну строку:
1 |
Dim fso As New FileSystemObject |
В две строки:
1 2 |
Dim fso As FileSystemObject Set fso = New FileSystemObject |
Позднее связывание
1 2 |
Dim fso As Object Set fso = CreateObject("Scripting.FileSystemObject") |
Свойство FileSystemObject
В VBA Excel у объекта FileSystemObject есть только одно свойство (Excel 2016):
Свойство | Описание |
---|---|
Drives | Возвращение коллекции всех дисков на компьютере |
Методы FileSystemObject
Свойство | Описание |
---|---|
BuildPath | Добавление имени в существующий путь |
CopyFile | Копирование одного или нескольких файлов из одного расположения в другое |
CopyFolder | Копирование одной или нескольких папок из одного расположения в другое |
CreateFolder | Создание новой папки |
CreateTextFile | Создание текстового файла и возвращение объекта TextStream, используемого для записи в файл |
DeleteFile | Удаление одного или нескольких указанных файлов |
DeleteFolder | Удаление одной или нескольких указанных папок |
DriveExists | Проверка существования указанного диска |
FileExists | Проверка существования указанного файла |
FolderExists | Проверка существования указанной папки |
GetAbsolutePathName | Возвращение полного пути из корневого каталога диска для указанного пути |
GetBaseName | Возвращение базового имени указанного файла или папки |
GetDrive | Возвращение объекта Drive, соответствующего диску в указанном пути |
GetDriveName | Возвращение имени диска указанного пути |
GetExtensionName | Возвращение расширения файла для последнего компонента в указанном пути |
GetFile | Возвращение файла по указанному пути |
GetFileName | Возвращение имени файла или папки для последнего компонента в указанном пути |
GetFileVersion | Возвращение версии файла для последнего компонента в указанном пути |
GetFolder | Возвращение папки по указанному пути |
GetParentFolderName | Возвращение имени родительской папки последнего компонента в указанном пути |
GetSpecialFolder | Возвращение пути к некоторым специальным папкам Windows |
GetStandardStream | Возвращение стандартного ввода, вывода или потока ошибок |
GetTempName | Возвращение созданного случайным образом временного файла или папки |
Move | Перемещение указанного файла или папки из одного места в другое |
MoveFile | Перемещение одного или нескольких файлов из одного места в другое |
MoveFolder | Перемещение одного или нескольких папок из одного места в другое |
OpenTextFile | Открытие файла по указанному пути и возвращение объекта TextStream, используемого для чтения, записи и добавления данных в файл |
Смотрите, как с помощью VBA Excel можно открыть папку в проводнике Windows для просмотра.
Примеры кода с FileSystemObject
Пример 1
Получение списка всех дисков на компьютере с помощью свойства Drives:
1 2 3 4 5 6 7 8 9 10 |
Sub Primer1() Dim fso, drs, dr, str Set fso = CreateObject("Scripting.FileSystemObject") Set drs = fso.Drives For Each dr In drs str = str & dr.DriveLetter & _ " - " & dr.VolumeName & vbCrLf Next MsgBox str End Sub |
Используемые переменные:
- fso – объект FileSystemObject;
- drs – коллекция дисков на компьютере (Drives);
- dr – один диск (Drive);
- str – строка со списком всех дисков (буквенное обозначение и имя).
Используемые свойства диска:
- DriveLetter – буквенное обозначение диска;
- VolumeName – присвоенное диску имя.
Если у вас на компьютере только системный диск «C», вставьте пару USB-накопителей (флешек). Имя диску «C» можно присвоить, выбрав его в проводнике и нажав клавишу «F2».
Результат работы кода будет примерно такой:
Пример 2
Создание новой папки, проверка ее существования и удаление:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
Sub Primer2() 'Объявляем переменную fso как новый экземпляр 'FileSystemObject (раннее связывание) Dim fso As New FileSystemObject, _ adr As String 'В строковую переменную записываем 'путь и имя создаваемой папки adr = ThisWorkbook.Path & "\temp" With fso 'Создаем новую папку .CreateFolder (adr) 'Проверяем существование новой папки (True) MsgBox .FolderExists(adr) 'Возвращаем имя новой папки (temp) MsgBox .GetFileName(adr) 'Удаляем папку .DeleteFolder (adr) 'Проверяем существование папки (False) MsgBox .FolderExists(adr) End With End Sub |
При остановке программы во время отображения одного из первых двух информационных окон MsgBox, вы можете перейти в проводник и убедиться, что в каталоге, где расположен файл Excel с этим кодом VBA, есть папка «temp».