Hvad er FileSystemObject (FSO), og hvordan bruges det i VBA Excel?

Indholdsfortegnelse:

Anonim

FileSystemObject bruges til at arbejde med mapper og filer, der er forbundet med systemet. Vi kan bruge den til at få adgang til filer, mapper, drev og tekststrømme. Det kan ikke kun få adgang til filer, mapper og tekstfiler, men kan også oprette. Disse handlinger er ikke begrænset til systemets harddisk, men enhver enhed, der er forbundet til filen. Det betyder, at du kan få adgang til pen -drev, cd -romer eller praktisk talt tilsluttede netværksdrev.

Dette er de operationer, vi kan udføre ved hjælp af FileSystemObject i VBA:

Til oprettelse, åbning, læsning, skrivning og sletning af tekstfiler.

Til tilføjelse, ændring og sletning af mapper.

At gennemgå filer og mapper.

Til kopiering og flytning af filer eller mapper til andre steder.

Til at kontrollere, om der findes en fil eller mappe på stedet eller ej

Sådan får du adgang til FileSystemObject i VBA?

Filsystemobjektet er en del af Microsoft Scripting Runtime Library. For at få adgang til et FileSystemObject skal vi forbinde eller tilføje en reference til Microsoft Scripting Runtime Library eller Scrrun.dll.

Bemærk: FileSystemObject understøtter ikke betjening af binære filer, fordi Scrrun.dll understøtter oprettelse og manipulation af filer ved hjælp af TextStream Object.

Der er to metoder til oprettelse af FileSystemObject i VBA:

1: Oprettelse af FSO -objekt ved hjælp af CreateObject -metode:

Ved hjælp af denne metode erklærer vi først en variabel objekttype. Indstil derefter referencen til FSO -objektet til den variabel ved hjælp af CreateObject:

Sub LearnFso () 'Oprettelse af objektvariablen Dim fso som objekt' Opret FileSystemObject ved hjælp af Create Object Method Set fso = CreateObject ("Scripting.FileSystemObject") Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR" ) Afslut Sub 

Denne metode er dynamisk og overførbar. Det betyder, at hvis du deler koden med andre systemer, fungerer denne kode helt fint. Det er ligegyldigt hvilken version af Microsoft Runtime Scripting -version du har.

Den eneste ulempe er, at du ikke vil kunne se den intellisense, som VBA leverer. Du bliver nødt til at stole på din viden for at bruge alle egenskaber og metoder til FileSystemObject.

2: Oprettelse af FSO -objekt ved at tilføje reference til Microsoft Runtime Scripting

Du kan oprette et FileSystemObject direkte i VBA ved hjælp af det nye søgeord. Til det skal du tilføje en reference til den nyeste Microsoft Scripting Runtime i dit system.

For at tilføje referencen skal du gå til referencemuligheden i værktøjsmenuen. Find her Microsoft Scripting Runtime dll. Tjek det, og klik på OK.

Nu er du klar til at oprette og bruge FSO -objektet.

Sub LearnFso () Dim fso as new FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") End Sub 

Eller

Sub LearnFso () Dim fso som FileSystemObject Set fso = New FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") End Sub 

Begge vil fungere fint.

En stor fordel ved denne metode er, at du vil kunne se VBA's intelligens. VBA viser dig alle egenskaber og metoder til fso -objekt. Det vil også fortælle, hvilken slags variabler det vil acceptere, og hvilken slags værdi det vil returnere.

Hvis du deler denne kode med andre systemer, bliver du nødt til at bede dem om at tilføje henvisning til Scripting Runtime fra værktøjer, ellers får de en kompileringsfejl, som den brugerdefinerede type ikke er defineret. Så det er som at importere andre programmeringssprog.

Bemærk, at FSO ikke er et nøgleord. Du kan bruge det som et variabelnavn. Det er bare en konvention at navngive filsystemobjekt som fso. Derfor forvirrer nogle mennesker, at det er et søgeord.

Begge metoder til at oprette FSO -objekter har deres fordele og ulemper, som jeg har nævnt, mens jeg forklarede dem. Så brug efter dit behov. I denne artikel vil jeg bruge den anden metode til at oprette FileSystemObject.

Nu hvor vi ved, hvordan vi opretter et FileSystemObject i VBA, lad os bruge denne viden til at udføre nogle meningsfulde opgaver. Jeg mener, lad os springe til eksemplerne.

Eksempel 1: Hent hele undermappen i en specificeret mappe

Det første eksempel, vi vil se, er at få en undermappe navne fra en bestemt mappe.

Sub LearnFso () 'decaring variabler, som vi skal bruge Dim fso As FileSystemObject' Variable for FileSystemObject Dim fdr As Folder 'Variabel for basismappen Dim subfdr As Folder' Variabel for undermapperne Dim fdrpath As String 'for at gemme sti til basen mappe 'Intialisering af objekterne fdrpath = "D: \ Downloads"' Deklaration af mappen Set fso = New FileSystemObject 'Oprettelse af fso -objektet Set fdr = fso.GetFolder (fdrpath)' Oprettelse af mappeobjektet for den givne mappe 'loop for at hente alle undermapper navn i For hver subfdr I fdr.SubFolders Debug.Print subfdr.Name Næste subfdr End Sub 

Når du kører ovenstående kode, får du dette.

Ja! Det er min downloadmappe. Koncentrer dig ikke om det.

Hvordan virkede dette?

Lad os forstå i trin:

1: Dekarerende variabler, som vi får brug for

Dim fso As FileSystemObject 'Variable for FileSystemObject

Dim fdr As Folder 'Variable for basismappen

Dim subfdr som mappevariabel for undermapperne

Først erklærede vi alle variablerne, som vi skal bruge i dette eksempel. Den første variabel er naturligvis fso som filsystemobjekt. De to variabler fdr og subfdr er af mappetype. Vi vil bruge fso -objektet til at oprette et filtypeobjekt i stedet for at oprette direkte. Det fdrpath er brugsvariabel bruges til at holde stien til basismappen, som vi ønsker at få alle undermapper til.

2: Intialisering af objekterne

fdrpath = "D: \ Downloads" 'Deklarere mappen

Set fso = New FileSystemObject 'Oprettelse af fso -objektet

Set fdr = fso.GetFolder (fdrpath) 'Oprettelse af mappeobjektet for den givne mappe

I dette trin initialiserede vi alle de objekter, som vi havde erklæret undtagen subfdr. Bemærk, at vi har initialiseret fdr -filvariablen ved hjælp af fso -objekts metode getFolder.

Metoden GetFolder () i FileSystemObject tager stien til en mappe eller et bibliotek som streng og returnerer filtypeobjekt.

3: loop for at få alle undermappernes navn i mappeobjektet

For hver subfdr I fdr.SubFolders

Debug.Print subfdr.Name

Næste subfdr

Her har vi brugt a for hver loop til at gå igennem hver undermappe i fdr -filobjektet. Vi brugte filobjektets egenskab SubFolders til at loop.

Vi bruger egenskaben navn til at få navnene på hver undermappe. Og det er gjort.

Eksempel 2: Hent alle filstier i en mappe og dets undermapper

For at få alle stier eller fuldt kvalificerede navne på alle filerne i en mappe og dens undermappe, skal vi tilføje et par flere linjer i eksempel 1 -kode.

Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Variable for the base folder Dim subfdr As Folder' Variable for the sub folders Dim fdrpath As String 'to store path of base folder Dim fl As File' to store file object fdrpath = "D: \ downloads" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) 'loop for at få alle undermappers navn i For Hver subfdr In fdr.SubFolders For hver fl In subfdr.Files' til at gå gennem hver fil Debug.Print fl.Path 'får filnavn Næste fl Næste subfdr' for at hente filerne i hovedmappen For hver fl In fdr.Files Debug.Print fl.Path Næste fl Afslut Sub 

Metoden Folder.Files () er den metode, der returnerer filerne i en undermappe. Metoden File.Path () returnerer hele filens adresse.

Vi har hver en indre sløjfe til at gentage alle filerne i undermappen i hovedmappen og dens.

For at få filerne i hovedmappen bruger vi en anden loop.

Eksempel 3: Gem filnavnene i en CSV -fil.

I det foregående eksempel lærte vi, hvordan man udskriver filstierne for bestemte mapper i det umiddelbare vindue. I dette eksempel lærer vi, hvordan du gemmer disse stier i en CSV -fil. For at gøre det skal vi bare tilføje et par linjer til koden. Se bolde -kode linjer nedenfor.

Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Variable for the base folder Dim subfdr As Folder' Variable for the sub folders Dim fdrpath As String 'to store path of base folder Dim fl As File' to store file object Dim fileList Som TextStream 'Et tekststrømobjekt fdrpath = "D: \ downloads" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) Set fileList = fso.CreateTextFile (fdrpath & "\ File List in This Folder.csv", True, False) 'loop for at få alle undermappernes navn i For hver subfdr I fdr.SubFolders For hver fl In subfdr.Files' til at gå gennem hver fil fileList.Write fl.Path & "," Next fl Next subfdr 'for at få filer i hovedmappen For hver fl In fdr.Files fileList.Write fl.Path & "," Næste fl fileList.Close End Sub 

Her har vi erklæret et nyt objekt af FileStream -typen navngivet fileList

Vi initialiserede filelistvariablen med et filestream -objekt ved hjælp af nedenstående linje.

Indstil fileList = fso.CreateTextFile (fdrpath & "\ File List in This Folder.csv", True, False)

Vi bruger metoden CreateTextFile for FSO til at oprette et FileStream -objekt. Det opretter en tekstfil. Denne metode accepterer navnet på en fil med en komplet sti. Den første variabel gør det. Vi bruger .csv -udvidelsen til at oprette en csv -fil. Den anden variabel bruges til at tillade overskrivning. Det tredje argument er Falsk at erklære, at det ikke er en binær fil.

I sløjferne erstatter vi debug.print med filelist.Write -metode til at skrive hver filsti i den oprettede fil.

Så ja fyre, det er sådan du kan bruge FileSystemObject. FSO kan bruges til mange flere ting, som vi vil diskutere i de kommende artikler. Hvis du er i tvivl om denne artikel i FSO -relateret forespørgsel, så spørg mig i kommentarfeltet herunder.

Kom godt i gang med Excel VBA UserForms| Jeg vil forklare, hvordan man opretter en formular i excel, hvordan man bruger VBA -værktøjskasse, hvordan man håndterer brugerinput og endelig hvordan man gemmer brugerinput. Vi vil gennemgå disse emner ved hjælp af et eksempel og en trinvis vejledning.

VBA -variabler i Excel| VBA står for Visual Basic for Applications. Det er et programmeringssprog fra Microsoft. Det bruges med Microsoft Office-applikationer som MSExcel, MS-Word og MS-Access, hvorimod VBA-variabler er specifikke søgeord.

Excel VBA variabelt omfang| På alle programmeringssprog har vi variabeladgangsspecifikatorer, der definerer, hvorfra der kan tilgås en defineret variabel. Excel VBA er ingen undtagelse. VBA har også omfangsspecifikationer.

ByRef og ByVal argumenter | Når et argument sendes som et ByRef -argument til en anden sub eller funktion, sendes referencen til den faktiske variabel. Eventuelle ændringer, der foretages i kopien af ​​variablen, vil afspejle sig i det originale argument.

Slet ark uden bekræftelsesmeddelelser ved hjælp af VBA i Microsoft Excel | Da du sletter ark ved hjælp af VBA, ved du, hvad du laver. Du vil gerne bede Excel om ikke at vise denne advarsel og slette det forbandede ark.

Tilføj og gem ny arbejdsmappe ved hjælp af VBA i Microsoft Excel 2016| I denne kode oprettede vi først en reference til et projektmappeobjekt. Og så initialiserede vi det med et nyt projektmappeobjekt. Fordelen ved denne tilgang er, at du nemt kan udføre operationer på denne nye projektmappe. Som at gemme, lukke, slette osv

Vis en meddelelse på Excel VBA -statuslinjen| Statuslinjen i excel kan bruges som kodeovervågning. Når din VBA -kode er lang, og du udfører flere opgaver ved hjælp af VBA, deaktiverer du ofte skærmopdateringen, så du ikke kan se, at skærmen flimrer.

Slå advarselsmeddelelser fra ved hjælp af VBA i Microsoft Excel 2016| Denne kode deaktiverer ikke kun VBA -advarsler, men øger også kodeens tidseffektivitet. Lad os se hvordan.

Populære artikler:

50 Excel -genveje til at øge din produktivitet | Få hurtigere til din opgave. Disse 50 genveje får dig til at arbejde endnu hurtigere i Excel.

VLOOKUP -funktionen i Excel | Dette er en af ​​de mest anvendte og populære funktioner i excel, der bruges til at slå værdi op fra forskellige områder og ark.

COUNTIF i Excel 2016 | Tæl værdier med betingelser ved hjælp af denne fantastiske funktion. Du behøver ikke at filtrere dine data for at tælle bestemte værdier. Countif -funktion er afgørende for at forberede dit dashboard.

Sådan bruges SUMIF -funktionen i Excel | Dette er endnu en vigtig instrumentbrætfunktion. Dette hjælper dig med at opsummere værdier på bestemte betingelser.