VBA FileSystemObject (FSO)

Excel VBA FileSystemObject (FSO)

VBA FileSystemObject (FSO) fungerar på samma sätt som FileDialog, används för att få tillgång till andra filer på den dator vi arbetar med. Vi kan också redigera dessa filer innebär att läsa eller skriva filen. Med FSO kan vi komma åt filer, arbeta med dem, ändra filer och mappar. FSO är det viktiga API-verktyget vi kan komma åt med VBA. Som en del av VBA-projektet kan vi behöva komma åt några mappar och filer på vår dator för att få jobbet gjort.

Vi kan göra många uppgifter genom att använda FSO som "att kontrollera om mappen är tillgänglig eller inte", Skapa ny mapp eller filer, byta namn på befintlig mapp eller filer, få en lista över alla filer i mappen och även undermappens namn, och äntligen kan vi kopiera filer från en plats till en annan.

Även det finns andra funktioner tillgängliga för att arbeta med mappar och filer, FSO är den enklaste metoden att arbeta med mappar och filer genom att hålla VBA-koden snygg och rak.

Vi kan komma åt fyra typer av objekt med FileSystemObject. Nedan är de.

  1. Drive: Med det här objektet kan vi kontrollera om den nämnda enheten existerar eller inte, vi kan få sökväg, typ av enhet och enhetens storlek.
  2. Mapp: Detta objekt låter oss kontrollera om den specifika mappen finns eller inte. Vi kan skapa, ta bort, ändra, kopiera mappar med det här objektet.
  3. Fil: Detta objekt låter oss kontrollera om den aktuella filen existerar eller inte. Vi kan skapa, ta bort, ändra, kopiera filer med detta vba-objekt.
  4. Textström: Detta objekt låter oss skapa eller läsa textfiler.

Alla ovanstående metoder har sin egen metod att arbeta med. Baserat på våra krav kan vi välja metod för varje objekt.

Hur aktiverar jag FileSystemObject?

Det är inte lätt tillgängligt i VBA. Eftersom åtkomst till filer och mappar är excelns externa uppgift måste vi aktivera FileSystemObject. Följ stegen nedan för att aktivera.

Steg 1: Gå till Verktyg> Referenser.

Steg # 2 - Välj alternativet 'Microsoft Scripting Runtime'

Rulla ned och välj alternativet 'Microsoft Scripting Runtime'. När du har valt alternativen klickar du på OK.

Nu kan vi komma åt FileSystemObject (FSO) i vba.

Skapa en instans av FileSystemObject

När alternativet 'Microsoft Scripting Runtime' är aktiverat från objektbiblioteket måste vi skapa förekomsten av File System Object (FSO) genom kodning.

För att skapa förekomsten deklarerar du först variabeln som FileSystemObject.

Som vi kan se visas FileSystemObject i IntelliSense-listan i VBA. Detta skulle inte ha varit tillgängligt innan vi aktiverar 'Microsoft Scripting Runtime'.

Eftersom FSO är ett objekt måste vi ställa in det för att skapa en ny instans.

Nu kan vi få tillgång till alla alternativ för FSO (FileSystemObject).

Exempel på att använda VBA FileSystemObject

Du kan ladda ner denna VBA FileSystemObject Excel-mall här - VBA FileSystemObject Excel-mall

Exempel # 1 - Hitta det totala utrymmet

Nedanstående kod ger enhetens totala utrymme.

Koda:

 Sub FSO_Example1 () Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject Dim DriveName As Drive Dim DriveSpace As Double Set DriveName = MyFirstFSO.GetDrive ("C:") 'Skapa nytt enhetsobjekt DriveSpace = DriveName.FreeSpace' Detta får ledigt utrymme av enheten "C" DriveSpace = DriveSpace / 1073741824 'Detta kommer att konvertera ledigt utrymme till GB DriveSpace = Round (DriveSpace, 2)' Runda det totala utrymmet MsgBox "Drive" & DriveName & "har" & DriveSpace & "GB" End Sub 

Uppdelning av koden.

Först skapade vi en instans av FSO.

 Dim MyFirstFSO Som FileSystemObject Ställ in MyFirstFSO = New FileSystemObject

Därefter har vi deklarerat två variabler.

 Dim DriveName Som Drive Dim DriveSpace As Double 

Eftersom DriveName är en objektvariabel måste vi ställa in detta till FSO en av FSO-metoden. Eftersom vi behöver enhetens egenskaper har vi använt Get Drive-alternativet och nämnt enhetsnamnet

 Ställ in DriveName = MyFirstFSO.GetDrive ("C:")

Nu till en annan variabel DriveSpace tilldelar vi metoden för ledigt utrymme för den enhet som vi använder.

DriveSpace = DriveName.FreeSpace

Från och med nu kan ovanstående ekvation ge oss ledigt utrymme för enheten "C". Så för att visa resultatet i GB har vi delat ledigt utrymme med 1073741824

DriveSpace = DriveSpace / 1073741824

Därefter rundar vi siffran.

DriveSpace = Round (DriveSpace, 2)

Slutligen, visa resultatet i Meddelandefältet.

MsgBox "Drive" & DriveName & "har" & DriveSpace & "GB"

När vi kör koden manuellt eller genom snabbtangenten F5, får vi i meddelandefältet ledigt utrymme för enheten "C".

Så på min dator har Drive C 216,19 GB ledigt minne.

Exempel # 2 - Kontrollera om mappen finns eller inte

För att kontrollera om den specifika mappen finns eller inte använda nedanstående kod.

Om den nämnda mappen är tillgänglig kommer den att visa oss meddelandefältet "Den nämnda mappen är tillgänglig" , om inte kommer den att visa VBA-meddelandefältet som "Den nämnda mappen är inte tillgänglig".

Koda:

 Sub FSO_Example2 () Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject If MyFirstFSO.FolderExists ("D: \ Excel Files \ VBA \ VBA Files") Då är MsgBox "Den nämnda mappen tillgänglig" Annars MsgBox "Den nämnda mappen är inte tillgänglig Avsluta om avsluta sub 

Kör den här koden via excel genväg F5 eller manuellt, se sedan resultatet.

Exempel # 3 - Kontrollera om filen finns eller inte

Nedanstående kod kommer att kontrollera om den nämnda filen är tillgänglig eller inte.

Koda:

 Sub FSO_Example3 () Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject If MyFirstFSO.FileExists ("D: \ Excel Files \ VBA \ VBA Files \ Testing File.xlsm") Då är MsgBox "Den nämnda filen tillgänglig" Annars MsgBox " Filen är inte tillgänglig "Avsluta om slutavs 

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