FileSystemObject se uporablja za delo z mapami in datotekami, povezanimi s sistemom. Z njim lahko dostopamo do datotek, map, pogonov in besedilnih tokov. Ne more samo dostopati do datotek, map in besedilnih datotek, ampak lahko tudi ustvarja. Te operacije niso omejene na trdi disk sistema, ampak na katero koli napravo, povezano z datoteko. To pomeni, da lahko dostopate do pogonov peresa, CD -jev ali skoraj povezanih omrežnih pogonov.
To so operacije, ki jih lahko izvedemo z uporabo FileSystemObject v VBA:
Za ustvarjanje, odpiranje, branje, pisanje in brisanje besedilnih datotek.
Za dodajanje, spreminjanje in brisanje map.
Za ponavljanje datotek in map.
Za kopiranje in premikanje datotek ali map na druga mesta.
Za preverjanje, ali datoteka ali mapa obstaja na lokaciji ali ne
Kako dostopati do FileSystemObject v VBA?
Objekt datotečnega sistema je del knjižnice Microsoft Scripting Runtime Library. Za dostop do FileSystemObject moramo povezati ali dodati sklic na Knjižnica izvajalnega okolja Microsoft Scripting Runtime ali Scrrun.dll.
Opomba: FileSystemObject ne podpira delovanja binarnih datotek, ker Scrrun.dll podpira ustvarjanje in upravljanje datotek z objektom TextStream.
Obstajata dva načina za ustvarjanje FileSystemObject v VBA:
1: Ustvarjanje predmeta FSO z uporabo metode CreateObject:
S to metodo najprej razglasimo spremenljivo vrsto objekta. Nato z uporabo CreateObject nastavite sklic na objekt FSO na to spremenljivko:
Sub LearnFso () 'Ustvarjanje spremenljivke objekta Dim fso as Object' Ustvarite FileSystemObject s pomočjo Create Object Method Set fso = CreateObject ("Scripting.FileSystemObject") Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR" ) End Sub
Ta metoda je dinamična in prenosljiva. To pomeni, da kodo delite z drugimi sistemi, bo ta koda delovala popolnoma v redu. Ni važno, katero različico skripta Microsoft Runtime Scripting imate.
Edina pomanjkljivost je, da ne boste mogli videti vmesnika, ki ga ponuja VBA. Za uporabo vseh lastnosti in metod FileSystemObject boste morali biti odvisni od svojega znanja.
2: Ustvarjanje predmeta FSO z dodajanjem sklicevanja na Microsoft Runtime Scripting
Z novo ključno besedo lahko neposredno ustvarite FileSystemObject v VBA. Za to boste morali dodati sklic na najnovejše izvajalno okolje Microsoft Scripting Runtime v vašem sistemu.
Če želite dodati sklic, pojdite na možnost reference v meniju z orodji. Tukaj poiščite dll Microsoft Scripting Runtime. Preverite in kliknite V redu.
Zdaj ste pripravljeni za ustvarjanje in uporabo objekta FSO.
Sub LearnFso () Dim fso kot nov FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") End Sub
Or
Sub LearnFso () Dim fso kot FileSystemObject Set fso = New FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") End Sub
Oboje bo delovalo dobro.
Glavna prednost te metode je, da boste lahko videli inteligenco VBA. VBA vam bo pokazal vse lastnosti in metode objekta fso. Povedal bo tudi, katere spremenljivke bo sprejel in kakšno vrednost bo vrnil.
Če delite to kodo z drugimi sistemi, jim boste morali povedati, naj dodajo sklice na Scripting Runtime iz orodij, sicer bodo prejeli napako pri prevajanju, da uporabniško določena vrsta ni definirana. Tako je kot uvoz drugih programskih jezikov.
Upoštevajte, da FSO ni ključna beseda. Uporabite ga lahko kot ime spremenljivke. To je samo dogovor za imenovanje datotečnega sistema kot fso. Zato nekateri zamenjujejo, da je to ključna beseda.
Obe metodi ustvarjanja objektov FSO imata svoje prednosti in slabosti, ki sem jih omenil med razlago. Zato uporabite po vaših potrebah. V tem članku bom uporabil drugo metodo ustvarjanja FileSystemObject.
Zdaj, ko vemo, kako ustvariti FileSystemObject v VBA, uporabimo to znanje pri opravljanju nekaterih pomembnih nalog. Mislim, pojdimo na primere.
Primer 1: Pridobite vso podmapo v določeni mapi
Prvi primer, ki ga bomo videli, je pridobivanje imen podmape iz določene mape.
Sub LearnFso () 'spremenljivke, ki jih potrebujemo Dim fso As FileSystemObject' Spremenljivka za FileSystemObject Dim fdr Kot mapa 'Spremenljivka za osnovno mapo Dim subfdr Kot mapa' Spremenljivka za podmape Dim fdrpath As String 'za shranjevanje poti baze mapa 'Intializing the objects fdrpath = "D: \ Downloads"' Razglasitev mape Set fso = New FileSystemObject 'Ustvarjanje predmeta fso Nastavite fdr = fso.GetFolder (fdrpath)' Ustvarjanje mape v dani mapi 'zanke, da dobite vse ime podmape v Za vsak podfdr V fdr.SubFolders Debug.Print subfdr.Name Naslednji subfdr End Sub
Ko zaženete zgornjo kodo, to dobite.
Ja! To je moja mapa za prenos. Ne osredotočajte se na to.
Kako je to delovalo?
Razumejmo po korakih:
1: Določanje spremenljivk, ki jih bomo potrebovali
Zatemni fso kot spremenljivko FileSystemObject za FileSystemObject
Dim fdr As Folder 'spremenljivka za osnovno mapo
Zatemni podfdr kot mapo 'Spremenljivka za podmape
Najprej smo deklarirali vse spremenljivke, ki jih bomo potrebovali v tem primeru. Prva spremenljivka je seveda fso kot objekt datotečnega sistema. Dve spremenljivki fdr in subfdr sta tipa mape. Predmet fso bomo uporabili za ustvarjanje predmeta vrste datoteke namesto za neposredno ustvarjanje. The fdrpath is spremenljivka use se uporablja za držanje poti osnovne mape, katere želimo dobiti vse podmape.
2: Inicializiranje predmetov
fdrpath = "D: \ Prenosi" 'Razglasitev mape
Set fso = New FileSystemObject 'Ustvarjanje predmeta fso
Set fdr = fso.GetFolder (fdrpath) 'Ustvarjanje predmeta mape dane mape
V tem koraku smo inicializirali vse objekte, ki smo jih deklarirali, razen subfdr. Upoštevajte, da smo spremenljivko datoteke fdr inicializirali z metodo fso predmetov getFolder.
Metoda GetFolder () FileSystemObject vzame pot mape ali imenika kot niz in vrne objekt vrste datoteke.
3: zanka, da dobite ime vseh podmap v predmetu mape
Za vsak podfdr V fdr.SubFolders
Odpravljanje napak. Natisni poddr. Ime
Naslednji podfdr
Tu smo za vsako zanko uporabili zanko za prehod skozi vsako podmapo v datotečnem objektu fdr. Za zanko smo uporabili lastnost SubFolders predmeta datoteke.
Lastnost name uporabljamo za pridobivanje imen vsake podmape. In to je storjeno.
Primer 2: Pridobite vse poti datotek v mapo in njene podmape
Če želimo dobiti vse poti ali popolnoma kvalificirana imena vseh datotek v mapi in njeni podmapi, moramo v kodo primera 1 dodati še nekaj vrstic.
Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Spremenljivka za osnovno mapo Dim subfdr As Folder' Spremenljivka za podmape Dim fdrpath As String 'za shranjevanje poti osnovne mape Dim fl As File' za shranjevanje predmeta datoteke fdrpath = "D: \ downloads" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) 'zanka, da dobimo vsa imena podmap v Za vsak podfdr V fdr.SubFolders Za vsak fl V subfdr. Datoteke za zanko skozi vsako datoteko Debug.Print fl.Path 'pridobivanje imena datoteke Naslednji fl Naslednji podfdr', da dobite datoteke glavne mape Za vsak fl V fdr. Datoteke Debug.Print fl.Path Naslednji fl End Sub
Metoda Folder.Files () je metoda, ki vrne datoteke v podmapo. Metoda File.Path () vrne celoten naslov datoteke.
Vsak od nas ima notranjo zanko za ponovitev vseh datotek v podmapi glavne mape in njeni.
Za pridobitev datotek glavne mape uporabimo drugo zanko.
Primer 3: Shranite imena datotek v datoteko CSV.
V prejšnjem primeru smo se naučili, kako natisniti poti datotek do določenih map v neposrednem oknu. V tem primeru se bomo naučili, kako shraniti te poti v datoteko CSV. Kodi moramo dodati le nekaj vrstic. Oglejte si spodnje vrstice s krepko pisavo.
Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Spremenljivka za osnovno mapo Dim subfdr As Folder' Spremenljivka za podmape Dim fdrpath As String 'za shranjevanje poti osnovne mape Dim fl As File' za shranjevanje predmeta datoteke Dim fileList Kot TextStream 'Objekt tekstovnega toka fdrpath = "D: \ downloads" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) Set fileList = fso.CreateTextFile (fdrpath & "\ List File in This Folder.csv", Res, res False) 'zanko, da dobite ime vseh podmap v Za vsak podfdr V fdr.SubFolders For Every fl V subfdr.Files', da prečkate vsako datoteko fileList.Write fl.Path & "," Next fl Next subfdr ", da dobite datoteke glavne mape Za vsak fl V fdr.Files fileList.Write fl.Path & "," Next fl fileList.Close End Sub
Tukaj smo razglasili nov objekt vrste FileStream z imenom fileList
S spodnjo vrstico smo inicializirali spremenljivko filelist z objektom filestream.
Nastavi fileList = fso.CreateTextFile (fdrpath & "\ Seznam datotek v tej mapi.csv", True, False)
Za ustvarjanje predmeta FileStream uporabljamo metodo CreateTextFile FSO. Ustvari besedilno datoteko. Ta metoda sprejme ime datoteke s popolno potjo. Prva spremenljivka to počne. Za ustvarjanje datoteke csv uporabljamo razširitev .csv. Druga spremenljivka se uporablja za dovoljenje prepisa. Tretji argument je napačno, če izjavimo, da ni binarna datoteka.
V zankah zamenjamo debug.print z datoteko filelist.Write za zapis vsake poti do datoteke v ustvarjeni datoteki.
Torej, fantje, tako lahko uporabite FileSystemObject. FSO lahko uporabimo za veliko več stvari, o katerih bomo razpravljali v prihodnjih člankih. Če dvomite o tem članku o vprašanjih, povezanih s FSO, me vprašajte v spodnjem razdelku za komentarje.
Uvod v uporabniške obrazce programa Excel VBA| Pojasnil bom, kako ustvariti obrazec v Excelu, kako uporabljati orodje VBA, kako ravnati z vnosi uporabnikov in na koncu kako shraniti vnose uporabnikov. Te teme bomo obravnavali z enim primerom in vodnikom po korakih.
Spremenljivke VBA v Excelu| VBA pomeni Visual Basic for Applications. To je programski jezik podjetja Microsoft. Uporablja se z aplikacijami Microsoft Office, kot so MSExcel, MS-Word in MS-Access, medtem ko so spremenljivke VBA posebne ključne besede.
Spremenljivi obseg programa Excel VBA| V vseh programskih jezikih imamo spremenljivke dostopa, ki določajo, od kod je mogoče dostopati do določene spremenljivke. Excel VBA ni izjema. VBA ima tudi specifikatorje obsega.
Argumenti ByRef in ByVal | Ko se argument posreduje kot argument ByRef na drugo pod -funkcijo ali funkcijo, se pošlje sklic na dejansko spremenljivko. Vse spremembe v kopiji spremenljivke se odražajo v izvirnem argumentu.
Brisanje listov brez potrditvenih pozivov z uporabo VBA v programu Microsoft Excel | Ker z VBA brišete liste, veste, kaj počnete. Excelu želite povedati, naj ne prikaže tega opozorila, in izbrišite prekleti list.
Dodajte in shranite nov delovni zvezek z uporabo VBA v programu Microsoft Excel 2016| V tej kodi smo najprej ustvarili sklic na predmet delovnega zvezka. In potem smo ga inicializirali z novim objektom delovnega zvezka. Prednost tega pristopa je, da lahko preprosto delate na tem novem delovnem zvezku. Tako kot shranjevanje, zapiranje, brisanje itd
Prikaz sporočila v vrstici stanja Excel VBA| Vrstica stanja v Excelu se lahko uporablja kot monitor kode. Ko je vaša koda VBA dolga in z VBA opravljate več nalog, pogosto onemogočite posodobitev zaslona, tako da zaslon ne utripa.
Izklopite opozorilna sporočila z uporabo VBA v programu Microsoft Excel 2016| Ta koda ne samo onemogoči opozorila VBA, ampak tudi poveča časovno učinkovitost kode. Poglejmo, kako.
Priljubljeni članki:
50 bližnjic v Excelu za večjo produktivnost | Poskrbite, da bo vaša naloga hitrejša. S temi 50 bližnjicami boste še hitreje delali v Excelu.
Funkcija VLOOKUP v Excelu | To je ena najpogosteje uporabljenih in priljubljenih funkcij programa Excel, ki se uporablja za iskanje vrednosti iz različnih obsegov in listov.
COUNTIF v Excelu 2016 | Štejte vrednosti s pogoji s to neverjetno funkcijo. Za štetje določenih vrednosti vam ni treba filtrirati podatkov. Funkcija Countif je bistvena za pripravo vaše armaturne plošče.
Kako uporabljati funkcijo SUMIF v Excelu | To je še ena bistvena funkcija armaturne plošče. To vam pomaga povzeti vrednosti za posebne pogoje.