FileSystemObject brukes til å arbeide med mapper og filer som er koblet til systemet. Vi kan bruke den til å få tilgang til filer, mapper, stasjoner og tekststrømmer. Den kan ikke bare få tilgang til filer, mapper og tekstfiler, men kan også opprette. Disse operasjonene er ikke begrenset til harddisken i systemet, men alle enheter som er koblet til filen. Det betyr at du kan få tilgang til pennstasjoner, cd -rom eller praktisk talt tilkoblede nettverksstasjoner.
Dette er operasjonene vi kan gjøre ved hjelp av FileSystemObject i VBA:
For å lage, åpne, lese, skrive og slette tekstfiler.
For å legge til, endre og slette mapper.
For å gå gjennom filer og mapper.
For kopiering og flytting av filer eller mapper til andre steder.
For å sjekke om det finnes en fil eller mappe på stedet eller ikke
Hvordan få tilgang til FileSystemObject i VBA?
Filsystemobjektet er en del av Microsoft Scripting Runtime Library. For å få tilgang til et FileSystemObject må vi koble til eller legge til en referanse til Microsoft Scripting Runtime Library eller Scrrun.dll.
Merk: FileSystemObject støtter ikke drift av binære filer fordi Scrrun.dll støtter opprettelse og manipulering av filer ved hjelp av TextStream Object.
Det er to metoder for å lage FileSystemObject i VBA:
1: Opprette FSO -objekt ved hjelp av CreateObject -metode:
Ved å bruke denne metoden deklarerer vi først en variabel objekttype. Sett deretter referansen til FSO -objektet til den variabelen ved hjelp av CreateObject:
Sub LearnFso () 'Opprette objektvariabelen Dim fso som objekt' Lag FileSystemObject ved hjelp av Create Object Method Set fso = CreateObject ("Scripting.FileSystemObject") Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR" ) Slutt Sub
Denne metoden er dynamisk og overførbar. Det betyr at hvis du deler koden med andre systemer, vil denne koden fungere helt fint. Det spiller ingen rolle hvilken versjon av Microsoft Runtime Scripting -versjonen du har.
Den eneste ulempen er at du ikke vil kunne se intellisensen fra VBA. Du må stole på din kunnskap for å bruke alle egenskapene og metodene til FileSystemObject.
2: Opprette FSO -objekt ved å legge til referanse til Microsoft Runtime Scripting
Du kan opprette et FileSystemObject direkte i VBA ved å bruke det nye søkeordet. For det må du legge til en referanse til den nyeste Microsoft Scripting Runtime i systemet ditt.
For å legge til referansen, gå til referansealternativet i verktøymemenyen. Her finner du Microsoft Scripting Runtime dll. Sjekk det og klikk OK.
Nå er du klar til å lage og bruke 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 bra.
En stor fordel med denne metoden er at du vil kunne se intelligensen til VBA. VBA viser deg alle egenskapene og metodene for FSO -objektet. Den vil også fortelle hva slags variabler den vil godta og hva slags verdi den vil returnere.
Hvis du deler denne koden med andre systemer, må du be dem legge til referanse til Scripting Runtime fra verktøy, ellers får de en kompileringsfeil som den brukerdefinerte typen ikke er definert. Så det er som å importere andre programmeringsspråk.
Vær oppmerksom på at FSO ikke er et nøkkelord. Du kan bruke det som et variabelnavn. Det er bare en konvensjon å navngi filsystemobjekt som fso. Det er derfor noen forvirrer at det er et nøkkelord.
Begge metodene for å lage FSO -objekter har sine fordeler og ulemper som jeg har nevnt mens jeg forklarte dem. Så bruk etter behov. I denne artikkelen vil jeg bruke den andre metoden for å lage FileSystemObject.
Nå som vi vet hvordan vi lager et FileSystemObject i VBA, la oss bruke denne kunnskapen til å utføre noen meningsfulle oppgaver. Jeg mener la oss hoppe til eksemplene.
Eksempel 1: Få hele undermappen i en spesifisert mappe
Det første eksemplet vi kommer til å se er å få undermappenavn fra en bestemt mappe.
Sub LearnFso () 'dekarerende variabler som vi trenger Dim fso As FileSystemObject' Variable for FileSystemObject Dim fdr As Folder 'Variabel for basemappen Dim subfdr As Folder' Variabel for undermappene Dim fdrpath As String 'for å lagre banen til basen mappe 'Intialisering av objektene fdrpath = "D: \ Downloads"' Deklarere mappen Sett fso = New FileSystemObject 'Opprette fso -objektet Sett fdr = fso.GetFolder (fdrpath)' Opprette mappeobjektet for gitt mappe 'loop for å få alle undermapper navn i For hver subfdr I fdr.SubFolders Debug.Print subfdr.Name Neste subfdr End Sub
Dette får du når du kjører koden ovenfor.
Ja! Det er nedlastingsmappen min. Ikke konsentrer deg om det.
Hvordan fungerte dette?
La oss forstå i trinn:
1: Dekarer variabler som vi trenger
Dim fso As FileSystemObject 'Variable for FileSystemObject
Dim fdr As Folder 'Variable for basismappen
Dim subfdr som mappevariabel for undermappene
Først erklærte vi alle variablene vi trenger i dette eksemplet. Den første variabelen er selvfølgelig fso som filsystemobjekt. De to variablene fdr og subfdr er av mappetype. Vi vil bruke fso -objektet til å lage et filtypeobjekt i stedet for å lage direkte. De fdrpath er bruk variabel brukes til å holde banen til basismappen som vi ønsker å få alle undermappene til.
2: Intialisering av objektene
fdrpath = "D: \ Nedlastinger" 'Deklarere mappen
Sett fso = New FileSystemObject 'Opprette fso -objektet
Sett fdr = fso.GetFolder (fdrpath) 'Opprette mappeobjektet til den gitte mappen
I dette trinnet initialiserte vi alle objektene vi hadde erklært bortsett fra subfdr. Vær oppmerksom på at vi har intialisert fdr -filvariabelen ved å bruke fso -objekts metode getFolder.
Metoden GetFolder () for FileSystemObject tar banen til en mappe eller katalog som streng og returnerer filtypeobjekt.
3: loop for å få alle undermappene i mappeobjektet
For hver subfdr I fdr.SubFolders
Debug.Print subfdr.Name
Neste subfdr
Her har vi brukt a for hver løkke for å gå gjennom hver undermappe i fdr -filobjektet. Vi brukte SubFolders -egenskapen til filobjektet til å sløyfe.
Vi bruker navnegenskapen for å få navnene på hver undermappe. Og det er gjort.
Eksempel 2: Få alle filbaner i en mappe og dens undermapper
For å få alle banene eller fullt kvalifiserte navn på alle filene i en mappe og dens undermappe, må vi legge til noen 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" Sett fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) 'loop for å få alle undermappens navn i For Hver subfdr In fdr.SubFolders For Hver fl In subfdr.Files' for å gå gjennom hver fil Debug.Print fl.Path 'får filnavn Neste fl Neste subfdr' for å få filene i hovedmappen For hver fl In fdr.Files Debug.Print fl.Path Neste fl End Sub
Metoden Folder.Files () er metoden som returnerer filene i en undermappe. Metoden File.Path () returnerer hele adressen til filen.
Vi har hver en indre sløyfe for å gjennomgå alle filene i undermappen til hovedmappen og dens.
For å få filene i hovedmappen bruker vi en annen loop.
Eksempel 3: Lagre filnavnene i en CSV -fil.
I forrige eksempel lærte vi hvordan du skriver ut filbanene til bestemte mapper i det umiddelbare vinduet. I dette eksemplet lærer vi hvordan du lagrer disse banene i en CSV -fil. For å gjøre dette trenger vi bare å legge til noen få linjer i koden. Se boldekodelinjene 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 'A textstream object 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 å få alle undermappene navn i For Every subfdr In fdr.SubFolders For Every fl In subfdr.Files' to loop through each file fileList.Write fl.Path & "," Next fl Next subfdr 'to get the filer i hovedmappen For hver fl In fdr.Files fileList.Write fl.Path & "," Next fl fileList.Close End Sub
Her har vi erklært et nytt objekt av FileStream -typen fileList
Vi initialiserte filelistvariabelen med et filestreamobjekt ved å bruke linjen nedenfor.
Angi fileList = fso.CreateTextFile (fdrpath & "\ File List in This Folder.csv", True, False)
Vi bruker metoden CreateTextFile for FSO for å lage et FileStream -objekt. Den lager en tekstfil. Denne metoden godtar navnet på en fil med en fullstendig bane. Den første variabelen gjør det. Vi bruker utvidelsen .csv til å lage en csv -fil. Den andre variabelen brukes til å tillate overskriving. Det tredje argumentet er False for å erklære at det ikke er en binær fil.
I løkkene erstatter vi debug.print med filelist.Write -metoden for å skrive hver filbane i filen som er opprettet.
Så ja gutta, dette er hvordan du kan bruke FileSystemObject. FSO kan brukes til mange flere ting, som vi vil diskutere i de kommende artiklene. Hvis du er i tvil om denne artikkelen om FSO -relatert spørring, kan du spørre meg i kommentarfeltet nedenfor.
Komme i gang med Excel VBA UserForms| Jeg vil forklare hvordan du lager et skjema i excel, hvordan du bruker VBA -verktøykasse, hvordan du håndterer brukerinnganger og til slutt hvordan du lagrer brukerinngangene. Vi vil gå gjennom disse emnene ved å bruke ett eksempel og en trinnvis veiledning.
VBA -variabler i Excel| VBA står for Visual Basic for Applications. Det er et programmeringsspråk fra Microsoft. Den brukes med Microsoft Office-applikasjoner som MSExcel, MS-Word og MS-Access, mens VBA-variabler er spesifikke søkeord.
Excel VBA variabelt omfang| På alle programmeringsspråk har vi variabel tilgangsspesifikatorer som definerer hvorfra en definert variabel kan nås. Excel VBA er ingen unntak. VBA har også omfangsspesifikatorer.
ByRef og ByVal -argumenter | Når et argument sendes som et ByRef -argument til en annen sub eller funksjon, sendes referansen til den faktiske variabelen. Eventuelle endringer som gjøres i kopien av variabelen, gjenspeiles i det opprinnelige argumentet.
Slett ark uten bekreftelsesforespørsler ved hjelp av VBA i Microsoft Excel | Siden du sletter ark med VBA, vet du hva du gjør. Du vil fortelle Excel om ikke å vise denne advarselen og slette det jævla arket.
Legg til og lagre ny arbeidsbok ved hjelp av VBA i Microsoft Excel 2016| I denne koden opprettet vi først en referanse til et arbeidsbokobjekt. Og så initialiserte vi det med et nytt arbeidsbokobjekt. Fordelen med denne tilnærmingen er at du enkelt kan utføre operasjoner på denne nye arbeidsboken. Som å lagre, lukke, slette osv
Vis en melding på Excel VBA -statuslinjen| Statuslinjen i excel kan brukes som en kodemonitor. Når VBA -koden din er lang og du gjør flere oppgaver med VBA, deaktiverer du ofte skjermoppdateringen slik at du ikke ser at skjermen flimrer.
Slå av advarselsmeldinger ved hjelp av VBA i Microsoft Excel 2016| Denne koden deaktiverer ikke bare VBA -varsler, men øker også tidens effektivitet av koden. La oss se hvordan.
Populære artikler:
50 Excel -snarveier for å øke produktiviteten | Bli raskere på oppgaven din. Disse 50 snarveiene får deg til å jobbe enda raskere med Excel.
VLOOKUP -funksjonen i Excel | Dette er en av de mest brukte og populære funksjonene til excel som brukes til å slå opp verdi fra forskjellige områder og ark.
COUNTIF i Excel 2016 | Tell verdier med betingelser ved hjelp av denne fantastiske funksjonen. Du trenger ikke å filtrere dataene dine for å telle spesifikke verdier. Countif -funksjonen er avgjørende for å forberede dashbordet.
Slik bruker du SUMIF -funksjonen i Excel | Dette er en annen viktig funksjon på dashbordet. Dette hjelper deg med å oppsummere verdier på spesifikke forhold.