Этот сайт использует cookies. Продолжение работы с сайтом означает, что Вы согласны!
Объект Folder. Работа с каталогами
Объект Folder
позволяет выполнять различные манипуляции с каталогами, например, копировать или удалить каталог. Создать объект позволяет метод GetFolder(<Имя каталога>)
объекта FileSystemObject
. В параметре <Имя каталога>
указывается путь к каталогу. Путь может быть абсолютным или относительным. При указании относительного пути полный путь определяется с учетом местоположения текущего рабочего каталога и текущего диска. Пример создания объекта:
Dim fso As New FileSystemObject
Dim Каталог As Folder
Set Каталог = fso.GetFolder(ThisWorkbook.Path & "\folder1")
' Работаем с каталогом
Создание каталога
Создать новый каталог позволяет метод CreateFolder(<Имя каталога>)
объекта FileSystemObject
. В параметре <Имя каталога>
указывается абсолютный или относительный путь к каталогу. Метод возвращает ссылку на объект Folder
. Если каталог уже существует, то генерируется ошибка. Пример создания каталога folder2
:
Dim fso As New FileSystemObject
Dim Каталог As Folder
Set Каталог = fso.CreateFolder(ThisWorkbook.Path & "\folder2")
Проверка существования каталога
Проверить существование каталога позволяет метод FolderExists(<Имя каталога>)
объекта FileSystemObject
. В параметре <Имя каталога>
указывается путь к каталогу. Метод возвращает значение True
, если каталог существует и False
— в противном случае. Пример:
Dim fso As New FileSystemObject, name As String
name = ThisWorkbook.Path & "\folder1"
If fso.FolderExists(name) = True Then
Debug.Print "Существует"
Else
Debug.Print "Нет"
End If
Получение информации о каталоге
Получить информацию о каталоге позволяют следующие свойства объекта Folder
:
Size
— общий размер всех файлов и подкаталогов;Path
— полный путь к каталогу (например,D:\VBA\folder1
);ShortPath
— короткий путь к каталогу;Name
— имя каталога без пути;ShortName
— короткое имя каталога;Drive
— имя диска (например,D:
);Type
— тип каталога;ParentFolder
— ссылка на объект родительского каталога;IsRootFolder
— содержит значениеTrue
, если каталог является корневым иFalse
— в противном случае;SubFolders
— ссылка на семействоFolders
с объектами подкаталогов;Files
— ссылка на семействоFiles
с объектами файлов данного каталога;DateCreated
— дата и время создания каталога;DateLastAccessed
— дата и время последнего доступа к каталогу;DateLastModified
— дата и время последнего изменения каталога;Attributes
— позволяет определить какие атрибуты установлены для каталога. Содержит сумму следующих значений:
0
—Normal
— обычный;1
—ReadOnly
— каталог доступен только для чтения;2
—Hidden
— скрытый каталог;4
—System
— системный каталог;16
—Directory
— путь указывает на каталог;32
—Archive
— архивный;64
—Alias
— псевдоним;128
—Compressed
— сжатый.
Проверить, установлен атрибут или нет, позволяет оператор And
. Если атрибут установлен, то результатом операции будет ненулевое значение. Если этому свойству присвоить новое значение, то атрибуты каталога (доступные для записи) будут изменены.
Пример получения и изменения атрибутов каталога показан в листинге 13.2.
Листинг 13.2. Получение и изменение атрибутов каталога
Dim fso As New FileSystemObject
Dim Каталог As Folder
Set Каталог = fso.GetFolder(ThisWorkbook.Path & "\folder1")
Debug.Print Каталог.Size
Debug.Print Каталог.Path ' D:\VBA\folder1
Debug.Print Каталог.ShortPath ' D:\VBA\folder1
Debug.Print Каталог.Name ' folder1
Debug.Print Каталог.ShortName ' folder1
Debug.Print Каталог.Drive ' D:
Debug.Print Каталог.Type ' Папка с файлами
Debug.Print Каталог.ParentFolder.Name ' VBA
Debug.Print Каталог.IsRootFolder ' False
Debug.Print TypeName(Каталог.SubFolders) ' Folders
Debug.Print TypeName(Каталог.Files) ' Files
Debug.Print Каталог.DateCreated ' 08.10.2012 19:36:27
Debug.Print Каталог.DateLastAccessed ' 15.10.2012 21:45:43
Debug.Print Каталог.DateLastModified ' 08.10.2012 19:53:23
Debug.Print Каталог.Attributes And Hidden ' 0 (не установлен)
Каталог.Attributes = Каталог.Attributes Or Hidden
Debug.Print Каталог.Attributes And Hidden ' 2 (установлен)
Манипулирование каталогами
Для манипулирования каталогами предназначены следующие методы объекта Folder
:
CreateTextFile(<Имя файла>[, <Перезапись>[, <Кодировка>]])
— создает новый файл в каталоге. В параметре<Имя файла>
указывается название файла. Если в необязательном параметре<Перезапись>
указано значениеTrue
(значение по умолчанию), то существующий файл будет перезаписан, а если значениеFalse
— то при существовании файла генерируется ошибка. Если в необязательном параметре<Кодировка>
указано значениеFalse
(значение по умолчанию), то файл создается в кодировке ASCII, а если значениеTrue
— то в кодировке Unicode. Метод возвращает объектTextStream
, с помощью которого производится дальнейшая работа с файлом. Пример создания и закрытия файла:
Dim fso As New FileSystemObject, f As TextStream
Dim Каталог As Folder
Set Каталог = fso.GetFolder(ThisWorkbook.Path & "\folder1")
Set f = Каталог.CreateTextFile("file1.txt")
' Работаем с файлом
f.Close ' Закрываем файл
Move <Новый путь>
— позволяет переместить или переименовать каталог:
Dim fso As New FileSystemObject
Dim Каталог As Folder
Set Каталог = fso.GetFolder(ThisWorkbook.Path & "\folder1")
Каталог.Move ThisWorkbook.Path & "\folder3"
Вместо метода Move()
можно воспользоваться методом MoveFolder()
объекта FileSystemObject
. Формат метода:
MoveFolder <Старый путь>, <Новый путь>
Пример переименования каталога folder1
в folder3
:
Dim fso As New FileSystemObject
fso.MoveFolder ThisWorkbook.Path & "\folder1", _
ThisWorkbook.Path & "\folder3"
Параметр <Старый путь>
может содержать подстановочные знаки в последнем компоненте пути;
Copy <Путь>[, <Перезапись>]
— позволяет скопировать содержимое каталога в другой каталог. Если во втором параметре указано значениеTrue
(значение по умолчанию), то существующий каталог будет перезаписан, а если значениеFalse
— то генерируется ошибка. Пример:
Dim fso As New FileSystemObject
Dim Каталог As Folder
Set Каталог = fso.GetFolder(ThisWorkbook.Path & "\folder3")
Каталог.Copy ThisWorkbook.Path & "\folder1"
Вместо метода Copy()
можно воспользоваться методом CopyFolder()
объекта FileSystemObject
. Формат метода:
CopyFolder <Старый путь>, <Новый путь>[, <Перезапись>]
Пример копирования каталога folder3
в folder1
:
Dim fso As New FileSystemObject
fso.CopyFolder ThisWorkbook.Path & "\folder3", _
ThisWorkbook.Path & "\folder1"
Параметр <Старый путь>
может содержать подстановочные знаки в последнем компоненте пути;
Delete [<Флаг>]
— удаляет каталог. Если в параметре указано значениеTrue
, то каталог удаляется даже в случае, если он доступен только для чтения. По умолчанию параметр имеет значениеFalse
. Пример:
Dim fso As New FileSystemObject
Dim Каталог As Folder
Set Каталог = fso.GetFolder(ThisWorkbook.Path & "\folder3")
Каталог.Delete True
Вместо метода Delete()
можно воспользоваться методом DeleteFolder()
объекта FileSystemObject
. Формат метода:
DeleteFolder <Путь>[, <Флаг>]
Пример удаления каталога folder3
:
Dim fso As New FileSystemObject
fso.DeleteFolder ThisWorkbook.Path & "\folder3"
Семейство Folders
Семейство Folders
содержит несколько объектов Folder
. Доступ к объекту в коллекции выполняется с помощью метода Item(<Индекс>)
или с помощью цикла For Each...Next
. Получить количество объектов в коллекции позволяет свойство Count
. Можно также добавить новый объект в коллекцию, передав название каталога в метод Add(<Название каталога>)
. Метод возвращает ссылку на объект Folder
.
С помощью свойства SubFolders
объекта Folder
можно получить ссылку на коллекцию всех подкаталогов в каталоге. В качестве примера выведем названия всех подкаталогов:
Dim fso As New FileSystemObject, fs As Folders
Dim Каталог As Folder, Item
Set Каталог = fso.GetFolder(ThisWorkbook.Path)
Set fs = Каталог.SubFolders
For Each Item In fs
Debug.Print Item.name
Next
Помощь сайту
Yandex-деньги: 410011140483022
ПАО Сбербанк:
Счет: 40817810855006152256
Реквизиты банка:
Наименование: СЕВЕРО-ЗАПАДНЫЙ БАНК ПАО СБЕРБАНК
Корреспондентский счет: 30101810500000000653
БИК: 044030653
КПП: 784243001
ОКПО: 09171401
ОКОНХ: 96130
Скриншот реквизитов