VBA FileSystemObject (FSO) | Как да вляза в FileSystemObject?

Excel VBA FileSystemObject (FSO)

VBA FileSystemObject (FSO) работи подобно на FileDialog, използва се за получаване на достъп до други файлове на компютъра, върху който работим. Ние също можем да редактираме тези файлове, означава четене или запис на файла. С помощта на FSO можем да имаме достъп до файлове, да работим с тях, да модифицираме файлове и папки. FSO е важният инструмент на API, до който имаме достъп с VBA. Като част от проекта VBA може да се наложи да получим достъп до няколко папки и файлове в нашия компютър, за да свършим работата.

Можем да изпълняваме много задачи, като използваме FSO като „да проверим дали папката е налична или не“, Създаване на нова папка или файлове, преименуване на съществуващата папка или файлове, получаване на списъка с всички файлове в папката, както и имена на подпапки и накрая, можем да копираме файлове от едно място на друго.

Въпреки че има и други функции за работа с папки и файлове, FSO е най-лесният метод за работа с папки и файлове, като поддържа VBA кода чист и прав.

Можем да осъществим достъп до 4 типа обекти с FileSystemObject. По-долу са тези.

  1. Drive: Използвайки този обект, можем да проверим дали споменатото устройство съществува или не, можем да получим името на пътя, вида на устройството и размера на устройството.
  2. Папка: Този обект ни позволява да проверим дали конкретната папка съществува или не. Можем да създаваме, изтриваме, модифицираме, копираме папки, използвайки този обект.
  3. Файл: Този обект ни позволява да проверим дали конкретният файл съществува или не. Можем да създаваме, изтриваме, модифицираме, копираме файлове, използвайки този vba обект.
  4. Текстов поток: Този обект ни позволява да създаваме или четем текстови файлове.

Всички горепосочени методи имат свой собствен метод за работа. Въз основа на нашето изискване можем да изберем метода на всеки обект.

Как да активирам FileSystemObject?

Той не е лесно достъпен във VBA. Тъй като достъпът до файлове и папки е външната задача на Excel, ние трябва да активираме FileSystemObject. За да активирате, следвайте стъпките по-долу.

Стъпка 1: Отидете на Инструменти> Референции.

Стъпка 2 - Изберете опцията „Microsoft Scripting Runtime“

Превъртете надолу и изберете опцията „Microsoft Scripting Runtime“. След като изберете опциите, щракнете върху OK.

Сега можем да осъществим достъп до FileSystemObject (FSO) във vba.

Създайте екземпляр на FileSystemObject

След като опцията 'Microsoft Scripting Runtime' е активирана от библиотеката Обекти, трябва да създадем екземпляр на File System Object (FSO) чрез кодиране.

За да създадете екземпляра, първо декларирайте променливата като FileSystemObject.

Както виждаме FileSystemObject се появява в списъка IntelliSense във VBA. Това нямаше да е налице, преди да активираме „Време за изпълнение на скриптове на Microsoft“.

Тъй като FSO е обект, трябва да го настроим за създаване на нов екземпляр.

Сега можем да получим достъп до всички опции на FSO (FileSystemObject).

Примери за използване на VBA FileSystemObject

Можете да изтеглите този шаблон на VBA FileSystemObject Excel тук - VBA FileSystemObject Excel шаблон

Пример # 1 - Намерете общото пространство на диска

По-долу кодът ще даде общото пространство на устройството.

Код:

 Sub FSO_Example1 () Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject Dim DriveName As Drive Dim DriveSpace As Double Set DriveName = MyFirstFSO.GetDrive ("C:") 'Create new drive object DriveSpace = DriveName.FreeSpace' This will get the free space на устройството "C" DriveSpace = DriveSpace / 1073741824 'Това ще преобразува свободното пространство в GB DriveSpace = Round (DriveSpace, 2)' Закръглете общото пространство MsgBox "Drive" & DriveName & "has" & DriveSpace & "GB" End Под 

Разбийте кодекса.

Първо създадохме екземпляр на FSO.

 Затъмняване на MyFirstFSO като FileSystemObject Задайте MyFirstFSO = Нов FileSystemObject

След това декларирахме две променливи.

 Dim DriveName As Drive Dim DriveSpace As Double 

Тъй като DriveName е обектна променлива, трябва да зададем това на FSO един от методите на FSO. Тъй като се нуждаем от характеристиката на устройството, използвахме опцията Get Drive и споменахме името на устройството

 Задайте DriveName = MyFirstFSO.GetDrive ("C:")

Сега за друга променлива DriveSpace ще присвоим метода за свободно пространство на устройството, до което имаме достъп.

DriveSpace = Име на Drive.FreeSpace

Към момента горното уравнение може да ни осигури свободно пространство на задвижването „C“. За да покажем резултата в GB, ние разделихме свободното пространство на 1073741824

DriveSpace = DriveSpace / 1073741824

След това ще закръглим числото.

DriveSpace = кръгъл (DriveSpace, 2)

Накрая покажете резултата в полето за съобщения.

MsgBox "Drive " & DriveName & " has " & DriveSpace & "GB"

When we run the code manually or through shortcut key F5, then in message box we will get the free space of the drive “C”.

So, in my computer Drive C has 216.19 GB of free space memory.

Example #2 – Check Whether the Folder Exists or Not

To check whether the particular folder exists or not use the below code.

If the mentioned folder is available then it will show us the message box as “The Mentioned Folder is Available”, if not it will show the VBA message box as “The Mentioned Folder is Not Available”.

Code:

 Sub FSO_Example2() Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject If MyFirstFSO.FolderExists("D:\Excel Files\VBA\VBA Files") Then MsgBox "The Mentioned Folder is Available" Else MsgBox "The Mentioned Folder is Not Available" End If End Sub 

Run this code through the excel Shortcut key F5 or manually, then see the result.

Example #3 – Check Whether the File Exists or Not

Below code will check whether the mentioned file is available or not.

Code:

 Sub FSO_Example3() Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject If MyFirstFSO.FileExists("D:\Excel Files\VBA\VBA Files\Testing File.xlsm") Then MsgBox "The Mentioned File is Available" Else MsgBox "The Mentioned File is Not Available" End If End Sub 

Run this code manually or using the F5 key, then see the result.