Работа с файловой системой
В этой статье я расскажу об удобном способе работы с фаловой системой в VBA.
Для начала создадим объект файловой системы:
Dim fso
Set fso = CreateObject("Scripting.FileSystemObject")
Этот объект включает в себя все необходимое для работы с файлами и папками Windows.
Вот так можно получить список всех дисков в системе:
Set drives = fso.drives
For Each d In drives
s = s + d.DriveLetter + ", "
Next d
MsgBox (s)
Попробуем узнать всю информацию о диске C:
этот код покажет нам свободное место на диске, его полную емкость, тип файловой системы, метку, серийный номер и многое другое.
Set DriveC = FSO.GetDrive("C:")
Str = "Диск C:" & vbCrLf & _
"AvailableSpace: " & DriveC.AvailableSpace & vbCrLf & _
"DriveLetter: " & DriveC.DriveLetter & vbCrLf & _
"DriveType: " & DriveC.DriveType & vbCrLf & _
"FileSystem: " & DriveC.FileSystem & vbCrLf & _
"FreeSpace: " & DriveC.FreeSpace & vbCrLf & _
"IsReady: " & DriveC.IsReady & vbCrLf & _
"Path: " & DriveC.Path & vbCrLf & _
"RootFolder (Path): " & DriveC.RootFolder.Path & vbCrLf & _
"SerialNumber: " & DriveC.SerialNumber & vbCrLf & _
"ShareName: " & DriveC.ShareName & vbCrLf & _
"TotalSize: " & DriveC.TotalSize & vbCrLf & _
"VolumeName: " & DriveC.VolumeName
MsgBox Str
С дисками разобрались, теперь перейдем к папкам. Объект папки создается так:
Set Folder = FSO.GetFolder("C:\Program Files")
Или так:
Set Folder = FSO.GetSpecialFolder(0)
Или вот так:
Set DriveC = FSO.GetDrive("C:")
Set Folder = DriveC.RootFolder
Получим список всех папок в C:\Program Files:
Set Folder = fso.GetFolder("C:\Program Files")
For Each SubFolder In Folder.SubFolders
s = s + SubFolder.Name + vbCrLf
Next
MsgBox (s)
А теперь посмотрим файлы на диске D:
Set Folder = fso.GetFolder("d:\")
For Each f In Folder.Files
s = s + f.Name + vbCrLf
Next
MsgBox (s)
Более подробное описание свойств и методов FileSystemObject можно найти в документации.