Što je FileSystemObject (FSO) i kako ga koristiti u VBA Excelu?

Sadržaj:

Anonim

FileSystemObject se koristi za rad s mapama i datotekama povezanim sa sustavom. Možemo ga koristiti za pristup datotekama, mapama, pogonu i tekstualnim tokovima. Ne samo da može pristupiti datotekama, mapama i tekstualnim datotekama, već može i stvarati. Ove operacije nisu ograničene na tvrdi disk sustava, već na sve uređaje povezane s datotekom. To znači da možete pristupiti pogonima za olovke, cd ROM -ovima ili gotovo povezanim mrežnim pogonima.

Ovo su operacije koje možemo izvesti pomoću FileSystemObject u VBA:

Za stvaranje, otvaranje, čitanje, pisanje i brisanje tekstualnih datoteka.

Za dodavanje, mijenjanje i brisanje mapa.

Za ponavljanje datoteka i mapa.

Za kopiranje i premještanje datoteka ili mapa na druga mjesta.

Za provjeru postoji li datoteka ili mapa na mjestu ili ne

Kako pristupiti FileSystemObject u VBA?

Objekt datotečnog sustava dio je Microsoft Scripting Runtime Library. Za pristup FileSystemObject moramo se povezati ili dodati referencu na Microsoft Scripting Runtime Library ili Scrrun.dll.

Napomena: FileSystemObject ne podržava rad binarnih datoteka jer Scrrun.dll podržava stvaranje i upravljanje datotekama pomoću TextStream Object.

Postoje dvije metode za stvaranje FileSystemObject u VBA:

1: Stvaranje FSO objekta pomoću metode CreateObject:

Pomoću ove metode prvo deklariramo promjenjivu vrstu objekta. Zatim postavite referencu FSO objekta na tu varijablu koristeći CreateObject:

Sub LearnFso () 'Stvaranje varijable objekta Dim fso as Object' Stvorite FileSystemObject koristeći Create Object Method Set fso = CreateObject ("Scripting.FileSystemObject") Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR" ) End Sub 

Ova je metoda dinamična i prenosiva. To znači, ako kôd dijelite s drugim sustavima, ovaj će kôd raditi savršeno u redu. Neće biti važno koju verziju Microsoft Runtime Scripting verzije imate.

Jedini nedostatak je što nećete moći vidjeti inteligenciju koju pruža VBA. Morat ćete ovisiti o svom znanju da biste koristili sva svojstva i metode FileSystemObject.

2: Stvaranje FSO objekta dodavanjem referenci na Microsoft Runtime Scripting

Možete izravno stvoriti FileSystemObject u VBA koristeći novu ključnu riječ. Za to ćete morati dodati referencu na najnovije Microsoft Scripting Runtime u vašem sustavu.

Da biste dodali referencu, idite na opciju reference u izborniku alata. Ovdje pronađite dll Microsoft Scripting Runtime. Provjerite i kliknite U redu.

Sada ste spremni za stvaranje i korištenje FSO objekta.

Sub LearnFso () Dim fso kao novi FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") Kraj Sub 

Ili

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

Oboje će raditi dobro.

Glavna prednost ove metode je što ćete moći vidjeti inteligenciju VBA -e. VBA će vam pokazati sva svojstva i metode fso objekta. Također će reći koje će varijable prihvatiti i kakvu će vrijednost vratiti.

Ako ovaj kôd podijelite s drugim sustavima, morat ćete im reći da dodaju referencu na Scripting Runtime iz alata, u protivnom će dobiti pogrešku pri prevođenju koja korisnički definirana vrsta nije definirana. Dakle, to je poput uvoza drugih programskih jezika.

Imajte na umu da FSO nije ključna riječ. Možete ga koristiti kao naziv varijable. Samo je dogovor da se datotečni sustav naziva "fso". Zato neki ljudi brkaju da je to ključna riječ.

Obje metode stvaranja FSO objekata imaju svoje prednosti i nedostatke koje sam spomenuo objašnjavajući ih. Zato koristite prema vašim potrebama. U ovom članku koristit ću drugu metodu stvaranja FileSystemObject.

Sada kada znamo kako stvoriti FileSystemObject u VBA -u, iskoristimo to znanje u obavljanju nekih značajnih zadataka. Mislim, prijeđimo na primjere.

Primjer 1: Preuzmite svu podmapu u navedenu mapu

Prvi primjer koji ćemo vidjeti je dobivanje naziva podmapa iz određene mape.

Sub LearnFso () 'varijable koje će nam trebati Dim fso As FileSystemObject' Varijabla za FileSystemObject Dim fdr Kao mapa 'Varijabla za osnovnu mapu Dim subfdr Kao mapa' Varijabla za podmape Dim fdrpath As String 'za spremanje putanje baze folder 'Intializing the objects fdrpath = "D: \ Downloads"' Deklariranje mape Set fso = New FileSystemObject 'Stvaranje fso objekta Postavite fdr = fso.GetFolder (fdrpath)' Stvaranje objekta mape zadane mape 'petlje kako biste dobili sve naziv podmape u Za svaki podfdr U fdr.SubFolders Debug.Print subfdr.Naziv Sljedeći subfdr Kraj Sub 

Ovo ćete dobiti kada pokrenete gornji kod.

Da! To je moja mapa za preuzimanje. Ne koncentrirajte se na to.

Kako je ovo funkcioniralo?

Shvatimo u koracima:

1: Određivanje varijabli koje će nam trebati

Zatamni fso kao varijablu FileSystemObject za FileSystemObject

Dim fdr As Folder 'Varijabla za osnovnu mapu

Dim subfdr As Folder 'Varijabla za podmape

Prvo smo deklarirali sve varijable koje će nam trebati u ovom primjeru. Prva varijabla je naravno fso kao objekt datotečnog sustava. Dvije varijable fdr i subfdr su vrste mape. Objekt fso koristit ćemo za stvaranje objekta vrste datoteke umjesto izravnog stvaranja. The fdrpath je varijabla use koristi se za držanje putanje osnovne mape iz koje želimo dobiti sve podmape.

2: Pokretanje objekata

fdrpath = "D: \ Preuzimanja" 'Deklariranje mape

Set fso = New FileSystemObject 'Stvaranje fso objekta

Postavi fdr = fso.GetFolder (fdrpath) 'Stvaranje objekta mape zadane mape

U ovom smo koraku inicijalizirali sve objekte koje smo deklarirali osim subfdr. Imajte na umu da smo incijalizirali varijablu datoteke fdr koristeći metodu fso objekata getFolder.

Metoda GetFolder () FileSystemObject vodi putanju do mape ili direktorija kao niz i vraća objekt tipa datoteke.

3: petlja za dobivanje svih naziva podmapa u objektu mape

Za svaki podfdr U fdr.SubFolders

Otklanjanje pogrešaka. Ispis podfdr.Naziv

Sljedeći podfdr

Ovdje smo za svaku petlju koristili petlju kroz svaku podmapu u objektu datoteke fdr. Za petlju smo koristili svojstvo SubFolders objekta datoteke.

Svojstvo name koristimo za dobivanje imena svake podmape. I to je učinjeno.

Primjer 2: Preuzmite sve putanje datoteka u mapu i podmape

Da bismo dobili sve putove ili potpuno kvalificirane nazive svih datoteka u mapi i njezinoj podmapi, moramo dodati još nekoliko redaka u primjer 1 koda.

Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Varijabla za osnovnu mapu Dim subfdr As Folder' Varijabla za podmape Dim fdrpath As String 'za spremanje putanje osnovne mape Dim fl As File' za spremanje objekta datoteke fdrpath = "D: \ downloads" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) 'petlja za dobivanje svih naziva podmapa u Za svaki podfdr U fdr.SubFolders Za svaki fl U subfdr. Datoteke za petlju kroz svaku datoteku Debug.Print fl.Path 'dobivanje naziva datoteke Sljedeći fl Sljedeći subfdr' za preuzimanje datoteka glavne mape Za svaki fl U fdr.Datoteke Debug.Print fl.Path Sljedeći fl Kraj Sub 

Folder.Files () metoda je metoda koja vraća datoteke u podmapu. Metoda File.Path () vraća potpunu adresu datoteke.

Svaki od nas ima unutarnju petlju za ponavljanje svih datoteka u podmapi glavne mape i njenoj.

Za dobivanje datoteka glavne mape koristimo drugu petlju.

Primjer 3: Spremite nazive datoteka u CSV datoteku.

U prethodnom primjeru naučili smo kako ispisati putanje datoteka određenih mapa u neposrednom prozoru. U ovom primjeru naučit ćemo kako spremiti te staze u CSV datoteku. Da bismo to učinili, samo moramo dodati nekoliko redaka kodu. U nastavku pogledajte podebljani kodni red.

Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Varijabla za osnovnu mapu Dim subfdr As Folder' Varijabla za podmape Dim fdrpath As String 'za spremanje putanje osnovne mape Dim fl As File' za spremanje objekta datoteke Dim fileList Kao TextStream 'Objekt tekstualnog toka fdrpath = "D: \ preuzima" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) Postavi fileList = fso.CreateTextFile (fdrpath & "\ Popis datoteka u ovoj mapi.csv", Istina False) 'petlji za dobivanje imena svih podmapa u Za svaki podfdr U fdr.SubFoldere Za svaki fl U subfdr. Datoteke' za prolaz kroz svaku datoteku fileList.Write fl.Path & "," Sljedeći fl Sljedeći podfdr 'da biste dobili datoteke glavne mape Za svaki fl U fdr.Datoteke fileList.Write fl.Path & "," Sljedeći fl fileList.Close End Sub 

Ovdje smo proglasili novi objekt tipa FileStream pod nazivom fileList

Varijablu popisa datoteka inicijalizirali smo objektom protoka datoteka pomoću donjeg retka.

Postavi fileList = fso.CreateTextFile (fdrpath & "\ Popis datoteka u ovoj mapi.csv", Tačno, Netačno)

Za izradu objekta FileStream koristimo metodu CreateTextFile od FSO. Stvara tekstualnu datoteku. Ova metoda prihvaća naziv datoteke s potpunom putanjom. Prva varijabla to čini. Za stvaranje csv datoteke koristimo ekstenziju .csv. Druga varijabla koristi se za dopuštanje prepisivanja. Treći argument je netočan ako izjavite da to nije binarna datoteka.

U petljama zamjenjujemo debug.print s filelist.Write metodom za pisanje svake staze datoteke u stvorenu datoteku.

Pa da, dečki, ovako možete koristiti FileSystemObject. FSO se može koristiti za mnoge druge stvari, o kojima ćemo govoriti u nadolazećim člancima. Ako imate bilo kakvih nedoumica u vezi ovog članka upita vezanog za FSO, pitajte me u donjem odjeljku komentara.

Početak korištenja Excel VBA korisničkih obrazaca| Objasnit ću kako stvoriti obrazac u Excelu, kako koristiti VBA alatni okvir, kako rukovati korisničkim ulazima i na kraju kako pohraniti korisničke unose. Kroz ove ćemo teme proći jednim primjerom i vodičem korak po korak.

VBA varijable u Excelu| VBA znači Visual Basic for Applications. To je programski jezik iz Microsofta. Koristi se s aplikacijama Microsoft Office kao što su MSExcel, MS-Word i MS-Access, dok su VBA varijable određene ključne riječi.

Excel VBA varijabilni opseg| U svim programskim jezicima imamo specifikatore pristupa varijablama koji definiraju odakle se može pristupiti definiranoj varijabli. Excel VBA nije iznimka. VBA također ima specifikatore opsega.

Argumenti ByRefa i ByVala | Kada se argument prenese kao ByRef argument na drugu pod -funkciju ili funkciju, šalje se referenca stvarne varijable. Sve promjene napravljene u kopiji varijable odrazit će se u izvornom argumentu.

Brisanje listova bez upita za potvrdu pomoću VBA u programu Microsoft Excel | Budući da brišete listove pomoću VBA -a, znate što radite. Htjeli biste Excel reći da ne prikazuje ovo upozorenje i izbrisati prokleti list.

Dodajte i spremite novu radnu knjigu pomoću VBA -a u programu Microsoft Excel 2016| U ovom smo kodu najprije stvorili referencu na objekt radne knjige. Zatim smo ga inicijalizirali novim objektom radne knjige. Prednost ovog pristupa je u tome što s ovom novom radnom knjigom možete lako raditi. Kao spremanje, zatvaranje, brisanje itd

Prikažite poruku na statusnoj traci programa Excel VBA| Statusna traka u Excelu može se koristiti kao monitor koda. Kad je vaš VBA kôd dugačak i obavite nekoliko zadataka pomoću VBA -a, često onemogućujete ažuriranje zaslona kako ne biste vidjeli kako zaslon treperi.

Isključite poruke upozorenja pomoću VBA u programu Microsoft Excel 2016| Ovaj kôd ne samo da onemogućuje VBA upozorenja, već i povećava vremensku učinkovitost koda. Pogledajmo kako.

Popularni članci:

50 Excel prečaca za povećanje vaše produktivnosti | Budite brži u izvršavanju svojih zadataka. Ovih 50 prečaca učinit će da radite još brže na Excelu.

Funkcija VLOOKUP u Excelu | Ovo je jedna od najčešće korištenih i popularnih funkcija programa Excel koja se koristi za traženje vrijednosti iz različitih raspona i listova.

COUNTIF u Excelu 2016 | Brojte vrijednosti s uvjetima pomoću ove nevjerojatne funkcije. Ne morate filtrirati svoje podatke da biste brojali određene vrijednosti. Funkcija Countif bitna je za pripremu vaše nadzorne ploče.

Kako koristiti funkciju SUMIF u Excelu | Ovo je još jedna bitna funkcija nadzorne ploče. To vam pomaže pri zbrajanju vrijednosti u posebnim uvjetima.