В этом руководстве будет показано, как использовать методы GetFolder и GetFile объекта FileSystemObject.
Получение свойств папки и файла с помощью VBA FileSystemObject
Метод GetFolder возвращает объект Folder, соответствующий папке по указанному пути, и позволяет вам получить доступ к его свойствам. Метод GetFile делает то же самое с указанным файлом.
Установить ссылку VBA
Во-первых, при использовании FileSystemObjects вам может потребоваться установить ссылку на библиотеку времени выполнения сценария VB: откройте редактор Visual Basic (ALT + F11), выберите Инструменты> Ссылки из раскрывающегося меню и установите флажок «Среда выполнения сценариев Microsoft».
FileSystemObject
Во-вторых, вы должны создать FileSystemObject:
12 | Dim FSO как новый объект FileSystemObjectУстановите FSO = CreateObject ("Scripting.FileSystemObject") |
Теперь у вас есть доступ к GetFolder и другим методам FileSystemObject.
Использование метода GetFolder
После указания папки, к которой вы хотите получить доступ
1 | Установите fld = FSO.GetFolder ("C: \ Src \") |
вы можете скопировать это:
1 | fld.Copy "C: \ NewFolder \" |
подвинь это:
1 | fld.Move "C: \ NewFolder \" |
удалите это:
1 | fld.Delete |
или создайте в нем новый текстовый файл:
1 | fld.CreateTextFile «NewTextFile.txt» |
Используя этот метод, вы получаете доступ к свойствам папки, таким как ее атрибуты (fld.Attributes), дата и время, когда она была создана (fld.DateCreated), последний доступ (fld.DateLastAccessed), последнее изменение (fld.DateLastModified) ), букву диска (fld.Drive), его имя и короткое имя (fld.Name, fld.ShortName), его путь и короткий путь (fld.Path, fld.ShortPath), его размер (fld.Size), его type (fld.Type), его родительская папка (fld.ParentFolder), проверьте, является ли она корневой папкой (fld.IsRootFolder), или вы можете перебирать, подсчитывать и т. д. ее файлы (fld.Files) или подпапки (fld. Вложенные папки).
Объединение всего этого в процедуру будет выглядеть так:
123456789101112131415161718192021222324 | Подложка FSOGetFolder ()Dim FSO как новый объект FileSystemObjectУстановите FSO = CreateObject ("Scripting.FileSystemObject")Установите fld = FSO.GetFolder ("C: \ Src \")Debug.Print fld.DateCreatedDebug.Print fld.DriveDebug.Print имя поляDebug.Print fld.ParentFolderDebug.Print fld.PathDebug.Print fld.ShortPathDebug.Print fld.SizeDebug.Print fld.Files.CountDebug.Print fld.TypeДля каждой складки в полях.Debug.Print fold.NameСледующая складкаДля каждого файла в полевых файлахDebug.Print fil.NameСледующий filКонец подписки |
Обратите внимание, что вы должны нажать Ctrl + G, чтобы увидеть результат команды Debug.Print в непосредственном окне VBA.
GetParentFolderName Метод
В качестве альтернативы вышеупомянутому способу вы можете получить доступ к имени родительской папки папки с помощью этого кода:
1234 | Dim FSO как новый объект FileSystemObjectУстановите FSO = CreateObject ("Scripting.FileSystemObject")ParentFold = FSO.GetParentFolderName ("C: \ ParentTest \ Test \") |
ParentFold в этом случае будет «C: \ ParentTest \».
Обратите внимание, что этот метод не разрешает путь и не проверяет наличие указанного пути.
GetSpecialFolder Метод
С помощью метода GetSpecialFolder, передав 0, 1 или 2 в качестве аргумента, вы можете получить путь к вашей папке Windows (с файлами, установленными операционной системой Windows), путь к вашей системной папке (с библиотеками, шрифтами и драйверами устройств) и временный путь к папке (папка, которая используется для хранения временных файлов) соответственно.
1234567 | Sub FSOGetSpecialFolder ()Dim FSO как новый объект FileSystemObjectУстановите FSO = CreateObject ("Scripting.FileSystemObject")Debug.Print FSO.GetSpecialFolder (0) ‘Результат может быть: C: \ Windows \ System32Конец подписки |
GetFile Метод
Вы можете использовать метод GetFile так же, как метод GetFolder. После указания файла, к которому вы хотите получить доступ
1 | Установите fil = FSO.GetFile ("C: \ Src \ Test.xlsx") |
вы можете скопировать это:
1 | fil.Copy "C: \ Dst \" |
подвинь это:
1 | fil.Move "C: \ Dst \" |
удалите это:
1 | fil.Delete |
или откройте его как объект TextStream:
1 | fil.OpenAsTextStream |
Таким же образом можно получить доступ к свойствам файла, таким как его атрибуты, дата и время, когда он был создан, последний доступ или последнее изменение, буква диска, имя и короткое имя, путь и короткий путь, размер, тип и его родительская папка. как описано в методе GetFolder.