VBA FileSystemObject (FSO) | Ako získať prístup k FileSystemObject?

Excel VBA FileSystemObject (FSO)

VBA FileSystemObject (FSO) funguje podobne ako FileDialog, ktorý slúži na získanie prístupu k ďalším súborom v počítači, na ktorom pracujeme. Tieto súbory môžeme tiež upravovať, čo znamená čítať alebo zapisovať do súboru. Pomocou FSO môžeme pristupovať k súborom, pracovať s nimi, upravovať súbory a priečinky. FSO je dôležitý nástroj API, ku ktorému máme prístup pomocou VBA. V rámci projektu VBA možno budeme musieť mať prístup k niekoľkým priečinkom a súborom v počítači, aby sme mohli prácu dokončiť.

Pomocou nástroja FSO môžeme urobiť veľa úloh, napríklad „skontrolovať, či je priečinok k dispozícii alebo nie“, vytvoriť nový priečinok alebo súbory, premenovať existujúci priečinok alebo súbory, získať zoznam všetkých súborov v priečinku a tiež názvy podpriečinkov a konečne môžeme kopírovať súbory z jedného miesta na druhé.

Aj keď sú k dispozícii ďalšie funkcie pre prácu s adresármi a súbormi, FSO je najjednoduchšia metóda pre prácu s adresármi a súbormi tak, že zachováva čistý a priamy kód VBA.

Pomocou FileSystemObject môžeme pristupovať k 4 typom objektov. Nižšie sú uvedené.

  1. Jednotka: Pomocou tohto objektu môžeme skontrolovať, či uvedená jednotka existuje alebo nie, môžeme získať cestu, typ jednotky a veľkosť jednotky.
  2. Priečinok: Tento objekt nám umožňuje skontrolovať, či konkrétny priečinok existuje alebo nie. Pomocou tohto objektu môžeme vytvárať, mazať, upravovať, kopírovať priečinky.
  3. Súbor: Tento objekt nám umožňuje skontrolovať, či konkrétny súbor existuje alebo nie. Pomocou tohto objektu vba môžeme vytvárať, mazať, upravovať, kopírovať súbory.
  4. Textový tok: Tento objekt nám umožňuje vytvárať alebo čítať textové súbory.

Všetky vyššie uvedené metódy majú svoju vlastnú metódu práce. Na základe našej požiadavky môžeme zvoliť metódu každého objektu.

Ako povoliť FileSystemObject?

Nie je ľahko prístupný vo VBA. Pretože prístup k súborom a adresárom je vonkajšou úlohou programu Excel, musíme povoliť FileSystemObject. Pre povolenie postupujte podľa nasledujúcich krokov.

Krok 1: Prejdite do ponuky Nástroje> Referencie.

Krok 2 - Vyberte možnosť „Microsoft Scripting Runtime“

Posuňte sa nadol a vyberte možnosť „Microsoft Scripting Runtime“. Po výbere možností kliknite na OK.

Teraz máme prístup k FileSystemObject (FSO) vo vba.

Vytvorte inštanciu FileSystemObject

Keď je v knižnici objektov povolená možnosť „Microsoft Scripting Runtime“, musíme pomocou kódovania vytvoriť inštanciu objektu systému súborov (FSO).

Pri vytváraní inštancie najskôr deklarujte premennú ako FileSystemObject.

Ako vidíme, FileSystemObject sa objavuje v zozname IntelliSense vo VBA. To by nebolo k dispozícii skôr, ako povolíme „Microsoft Scripting Runtime“.

Pretože FSO je objekt, musíme ho nastaviť na vytvorenie novej inštancie.

Teraz máme prístup ku všetkým možnostiam FSO (FileSystemObject).

Príklady použitia VBA FileSystemObject

Túto šablónu VBA FileSystemObject Excel si môžete stiahnuť tu - Šablóna VBA FileSystemObject Excel

Príklad č. 1 - Nájdite celkový priestor na disku

Nižšie uvedený kód poskytne celkový priestor na disku.

Kód:

 Sub FSO_Example1 () Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject Dim Drive Drive as Drive Dim DriveSpace As Double Set DriveName = MyFirstFSO.GetDrive ("C:") 'Create new drive object DriveSpace = DriveName.FreeSpace' This will get the free space jednotky "C" DriveSpace = DriveSpace / 1073741824 'Týmto sa voľný priestor skonvertuje na GB DriveSpace = Round (DriveSpace, 2)' zaokrúhliť celkový priestor MsgBox "Drive" & DriveName & "has" & DriveSpace & "GB" End Sub 

Členenie kódexu.

Najskôr sme vytvorili inštanciu FSO.

 Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject

Ďalej sme deklarovali dve premenné.

 Dim DriveName ako Drive Dim DriveSpace ako Double 

Pretože DriveName je premenná Object, musíme to nastaviť na FSO ako jednu z metód FSO. Pretože potrebujeme charakteristiku disku, použili sme možnosť Získať disk a spomenuli sme názov disku

 Nastaviť DriveName = MyFirstFSO.GetDrive ("C:")

Teraz pre ďalšiu premennú DriveSpace priradíme metódu voľného miesta disku, ku ktorému pristupujeme.

DriveSpace = DriveName.FreeSpace

Vyššie uvedená rovnica nám teraz môže poskytnúť voľné miesto pre jednotku „C“. Na zobrazenie výsledku v GB sme teda voľné miesto vydelili číslom 1073741824

DriveSpace = DriveSpace / 1073741824

Ďalej číslo zaokrúhľujeme.

DriveSpace = Round (DriveSpace, 2)

Nakoniec ukážte výsledok v schránke správ.

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.