Този урок ще покаже как да използвате методите GetFolder и GetFile на FileSystemObject.
Вземете свойствата на папката и файла с VBA FileSystemObject
Методът GetFolder връща обект Folder, съответстващ на папката в посочен път и ви позволява да получите достъп до нейните свойства. Методът GetFile прави същото с посочения файл.
Задайте VBA Reference
Първо, когато използвате FileSystemObjects, може да се наложи да зададете препратка към библиотеката по време на изпълнение на скрипта VB: отворете редактора на Visual Basic (ALT+F11), изберете Инструменти> Препратки от падащото меню и поставете отметка в квадратчето за „Microsoft Scripting Runtime“.
FileSystemObject
Второ, трябва да създадете FileSystemObject:
12 | Затъмнете FSO като нов FileSystemObjectЗадайте FSO = CreateObject ("Scripting.FileSystemObject") |
Сега имате достъп до GetFolder и другите методи на FileSystemObject.
Използване на метода GetFolder
След като посочите папката, до която искате да получите достъп
1 | Задайте fld = FSO.GetFolder ("C: \ Src \") |
можете да го копирате:
1 | fld.Копирайте "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), неговият въведете (fld.Type), родителската му папка (fld.ParentFolder), проверете дали това е основна папка (fld.IsRootFolder) или можете да прегледате, преброите и т.н. файловете си (fld.Files) или подпапки (fld. Подпапки).
Обединяването на всичко това в процедура ще изглежда така:
123456789101112131415161718192021222324 | Sub FSOGetFolder ()Затъмнете FSO като нов FileSystemObjectЗадайте FSO = CreateObject ("Scripting.FileSystemObject")Задайте fld = FSO.GetFolder ("C: \ Src \")Debug.Print fld.DateCreatedDebug.Print fld.DriveDebug.Print fld.NameDebug.Print fld.ParentFolderDebug.Print fld.PathDebug.Print fld.ShortPathDebug.Print fld.SizeDebug.Print fld.Files.CountDebug.Print fld.TypeЗа всяко сгъване В fld.SubFoldersDebug.Print fold.NameСледващо сгъванеЗа всеки fil In fld.FilesDebug.Print fil.NameСледващ филEnd Sub |
Моля, обърнете внимание, че трябва да натиснете Ctrl+G, за да видите резултата от командата Debug.Print в непосредствения прозорец на VBA.
Метод GetParentFolderName
Като алтернатива на гореспоменатия начин можете да получите достъп до името на родителската папка на папка, като използвате този код:
1234 | Затъмнете 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 ()Затъмнете FSO като нов FileSystemObjectЗадайте FSO = CreateObject ("Scripting.FileSystemObject")Debug.Print FSO.GetSpecialFolder (0) „Резултатът може да бъде: C: \ Windows \ System32End Sub |
Метод 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.