Перейти к содержимому

VBA Excel. Объект FileSystemObject

Объект FileSystemObject, предоставляющий в VBA Excel доступ к файловой системе компьютера. Создание экземпляра FileSystemObject и его методы. Примеры.

  1. Объект FileSystemObject
  2. Создание, свойство, методы
  3. Примеры кода с FileSystemObject

Объект FileSystemObject

FileSystemObject – это объект, который предоставляет доступ к файловой системе компьютера: дискам, папкам (каталогам), файлам.

Объект FileSystemObject обеспечивает в коде VBA Excel следующие возможности:

  • Проверка существования диска, папки или файла.
  • Создание новой папки.
  • Создание текстового файла и предоставление последовательного доступа для записи.
  • Открытие текстового файла и предоставление последовательного доступа для записи или чтения.
  • Копирование, перемещение и удаление папок и файлов.
  • Работа с путями к папкам и файлам.
  • Возвращение имен дисков, папок и файлов.

Создание, свойство, методы

Создание экземпляра FileSystemObject

Создать новый экземпляр объекта FileSystemObject можно с помощью раннего или позднего связывания.

Раннее связывание

В одну строку:

Dim fso As New FileSystemObject

В две строки:

Dim fso As FileSystemObject
Set fso = New FileSystemObject

Позднее связывание

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, используемого для чтения, записи и добавления данных в файл

Примеры кода с FileSystemObject

Пример 1
Получение списка всех дисков на компьютере с помощью свойства Drives:

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
Создание новой папки, проверка ее существования и удаление:

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».

Содержание рубрики VBA Excel по тематическим разделам со ссылками на все статьи.

Добавить комментарий

Ваш комментарий будет опубликован после прохождения обязательной модерации. Исходящие ссылки не допускаются. Время модерации составит от нескольких минут до нескольких часов в зависимости от времени суток и занятости модератора. При добавлении в комментарий кода VBA Excel, вставьте перед его началом тег [vb] и по окончании кода - [/vb].