Kas yra „FileSystemObject“ (FSO) ir kaip jį naudoti „VBA Excel“?

„FileSystemObject“ naudojamas dirbti su aplankais ir failais, prijungtais prie sistemos. Mes galime jį naudoti norėdami pasiekti failus, aplankus, diską ir teksto srautus. Jis gali ne tik pasiekti failus, aplankus ir teksto failus, bet ir kurti. Šios operacijos neapsiriboja sistemos kietuoju disku, bet bet kokiu prie failo prijungtu įrenginiu. Tai reiškia, kad galite pasiekti rašiklius, kompaktinius diskus ar virtualiai prijungtus tinklo diskus.

Tai yra operacijos, kurias galime atlikti naudodami „FileSystemObject“ VBA:

Teksto failų kūrimui, atidarymui, skaitymui, rašymui ir trynimui.

Norėdami pridėti, keisti ir ištrinti aplankus.

Norėdami kartoti failus ir aplankus.

Failų ar aplankų kopijavimui ir perkėlimui į kitas vietas.

Norėdami patikrinti, ar toje vietoje yra failas ar aplankas, ar ne

Kaip pasiekti „FileSystemObject“ VBA?

Failų sistemos objektas yra „Microsoft Scripting Runtime Library“ dalis. Norėdami pasiekti „FileSystemObject“, turime prijungti arba pridėti nuorodą į „Microsoft Scripting Runtime Library“ arba „Scrrun.dll“.

Pastaba: „FileSystemObject“ nepalaiko dvejetainių failų veikimo, nes „Scrrun.dll“ palaiko failų kūrimą ir manipuliavimą naudojant „TextStream Object“.

Yra du „FileSystemObject“ kūrimo būdai VBA:

1: FSO objekto kūrimas naudojant „CreateObject“ metodą:

Naudodami šį metodą pirmiausia deklaruojame kintamo objekto tipą. Tada nustatykite FSO objekto nuorodą į tą kintamąjį naudodami „CreateObject“:

Sub LearnFso () 'Objekto kintamojo sukūrimas Dim fso As Object' Sukurkite FileSystemObject naudodami Create Object Method Set fso = CreateObject ("Scripting.FileSystemObject") Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR" ) Pabaiga 

Šis metodas yra dinamiškas ir perkeliamas. Tai reiškia, kad jei bendrinate kodą su kitomis sistemomis, šis kodas veiks puikiai. Nesvarbu, kokią „Microsoft Runtime Scripting“ versijos versiją turite.

Vienintelis trūkumas yra tas, kad negalėsite pamatyti VBA teikiamos intellisenės. Norėdami naudotis visomis „FileSystemObject“ savybėmis ir metodais, turėsite priklausyti nuo savo žinių.

2: FSO objekto kūrimas pridedant nuorodą į „Microsoft Runtime Scripting“

Galite tiesiogiai sukurti „FileSystemObject“ VBA naudodami naują raktinį žodį. Norėdami tai padaryti, turėsite pridėti nuorodą į naujausią „Microsoft Scripting Runtime“ jūsų sistemoje.

Norėdami pridėti nuorodą, eikite į nuorodų parinktį įrankių meniu. Čia rasite „Microsoft Scripting Runtime dll“. Patikrinkite ir spustelėkite Gerai.

Dabar esate pasiruošę sukurti ir naudoti FSO objektą.

Sub LearnFso () Dim fso kaip naujas FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") Pabaiga 

Arba

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

Abu veiks gerai.

Pagrindinis šio metodo privalumas yra tai, kad galėsite pamatyti VBA intelektą. VBA parodys visas fso objekto savybes ir metodus. Jis taip pat nurodys, kokius kintamuosius jis priims ir kokią vertę grąžins.

Jei bendrinsite šį kodą su kitomis sistemomis, turėsite jiems pasakyti, kad jie pridėtų nuorodą į „Scripting Runtime“ iš įrankių, kitaip jie gaus kompiliavimo klaidą, kad vartotojo apibrėžtas tipas nėra apibrėžtas. Taigi tai panašu į kitų programavimo kalbų importavimą.

Atminkite, kad FSO nėra raktinis žodis. Galite jį naudoti kaip kintamojo pavadinimą. Tai tik susitarimas failų sistemos objektą pavadinti fso. Štai kodėl kai kurie žmonės painioja, kad tai raktinis žodis.

Abu FSO objektų kūrimo būdai turi savo privalumų ir trūkumų, kuriuos paminėjau juos paaiškindamas. Taigi naudokite pagal savo poreikius. Šiame straipsnyje naudosiu antrąjį „FileSystemObject“ kūrimo metodą.

Dabar, kai žinome, kaip sukurti „FileSystemObject“ VBA, pasinaudokime šiomis žiniomis atlikdami reikšmingas užduotis. Aš turiu galvoje, pereikime prie pavyzdžių.

1 pavyzdys: gaukite visus antrinius aplankus į nurodytą aplanką

Pirmasis pavyzdys, kurį pamatysime, yra antrinių aplankų pavadinimų gavimas iš konkretaus aplanko.

Sub LearnFso () 'mažinantys kintamieji, kurių mums reikės aplankas 'Objektų inicijavimas fdrpath = "D: \ Parsisiuntimai"' Aplanko deklaravimas Set fso = New FileSystemObject 'Fso objekto sukūrimas Nustatykite fdr = fso.GetFolder (fdrpath)' Kurdami tam tikro aplanko aplanko objektą 'kilpa, kad gautumėte visą poaplankių pavadinimas kiekvienam subfdr fdr.SubFolders Debug.Print subfdr.Name Kitas subfdr End Sub 

Kai paleisite aukščiau pateiktą kodą, gausite tai.

Taip! Tai mano atsisiuntimo aplankas. Nesikoncentruok į tai.

Kaip tai veikė?

Supraskime žingsniais:

1: mažėjantys kintamieji, kurių mums reikės

„Dim fso As FileSystemObject“ kintamasis, skirtas „FileSystemObject“

Dim fdr As Folder 'Kintamasis baziniam aplankui

Dim subfdr As Folder 'Kintamasis poaplankiams

Pirmiausia mes deklaravome visus kintamuosius, kurių mums reikės šiame pavyzdyje. Žinoma, pirmasis kintamasis yra fso kaip failų sistemos objektas. Du kintamieji fdr ir subfdr yra aplanko tipo. Mes naudosime „fso“ objektą failo tipo objektui sukurti, o ne tiesiogiai. The fdrpath is use kintamasis naudojamas laikyti pagrindinio aplanko, kurio norime gauti visus antrinius aplankus, kelią.

2: objektų inicijavimas

fdrpath = "D: Atsisiuntimai" „Aplanko deklaravimas

Nustatykite fso = New FileSystemObject 'Fso objekto kūrimas

Nustatykite fdr = fso.GetFolder (fdrpath) 'Kuriamas aplanko aplanko objektas

Šiame etape mes inicijavome visus objektus, kuriuos deklaravome, išskyrus subfdr. Atkreipkite dėmesį, kad mes inicializavome fdr failo kintamąjį naudodami fso objektų metodą getFolder.

„FileSystemObject“ metodas „GetFolder“ () aplanko ar katalogo kelią perima kaip eilutę ir grąžina failo tipo objektą.

3: kilpa, kad aplanko objekte būtų gauti visi poaplankių pavadinimai

Kiekvienam subfdr fdr.SubFolders

Derinti. Spausdinti antrinį pavadinimą

Kitas subfdr

Čia mes naudojome a kiekvienai kilpai, norėdami kilpoti per kiekvieną fdr failo objekto poaplankį. Mes panaudojome failo objekto ypatybę SubFolders, kad galėtume cikluoti.

Mes naudojame vardo ypatybę, kad gautume kiekvieno pakatalogio pavadinimą. Ir tai daroma.

2 pavyzdys: gaukite visus failų kelius į aplanką ir jo poaplankius

Norėdami gauti visus visų aplanko ir jo pakatalogio failų kelius arba visiškai kvalifikuotus pavadinimus, 1 pavyzdžio kode turime pridėti dar kelias eilutes.

Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Kintamasis pagrindiniam aplankui Dim subfdr As Folder' Kintamasis poaplankiams Dim fdrpath As String 'bazinio aplanko keliui saugoti Dim fl As File' failo objektui saugoti fdrpath = "D: \ atsisiuntimai" Nustatykite fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) 'ciklą, kad gautumėte visų poaplankių pavadinimus kiekvienam subfdr fdr.SubFolders Kiekvienam fl In subfdr.Files', kad būtų galima perkelti kiekvieną failą Debug.Print fl.Path „gauti failo pavadinimą Next fl Next subfdr“, kad gautumėte pagrindinio aplanko failus Kiekvienam fl In fdr.Files Debug. 

„Folder.Files“ () metodas yra metodas, kuris grąžina poaplankio failus. Metodas File.Path () grąžina visą failo adresą.

Kiekvienas turime vidinę kilpą, norėdami pakartoti visus pagrindinio aplanko ir jo aplanko poaplankio failus.

Norėdami gauti pagrindinio aplanko failus, naudojame kitą kilpą.

3 pavyzdys: išsaugokite failų pavadinimus CSV faile.

Ankstesniame pavyzdyje mes išmokome spausdinti konkrečių aplankų failų kelius tiesioginiame lange. Šiame pavyzdyje sužinosime, kaip išsaugoti tuos kelius CSV faile. Norėdami tai padaryti, mes tiesiog turime pridėti keletą eilučių prie kodo. Žiūrėkite žemiau esančias išlenktas kodo eilutes.

Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Kintamasis pagrindiniam aplankui Dim subfdr As Folder' Kintamasis poaplankiams Dim fdrpath As String 'bazinio aplanko keliui saugoti Dim fl As File' failo objektui saugoti Dim fileList Kaip „TextStream“ A texttream objektas fdrpath = "D: \ atsisiuntimai" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) Set fileList = fso.CreateTextFile (fdrpath & "Failų sąrašas šiame aplanke.csv", Tiesa, False) 'kilpa, kad visi poaplankių pavadinimai būtų rodomi kiekvienam subfdr In fdr.SubFolders For each fl In subfdr.Files', kad būtų galima peržiūrėti kiekvieną failą fileList.Write fl.Path & "," Next fl Next subfdr ", kad gautumėte pagrindinio aplanko failai Kiekvienam fl In fdr.Files fileList.Write fl.Path & "," Kitas fl fileList.Close End Sub 

Čia mes paskelbėme naują „FileStream“ tipo objektą pavadinimu fileList

Mes inicijavome failų sąrašo kintamąjį naudodami failo srauto objektą, naudodami žemiau esančią eilutę.

Nustatykite fileList = fso.CreateTextFile (fdrpath & "Failų sąrašas šiame aplanke.csv", tiesa, klaidinga)

Norėdami sukurti „FileStream“ objektą, naudojame FSO „CreateTextFile“ metodą. Tai sukuria tekstinį failą. Šis metodas priima failo pavadinimą su visu keliu. Pirmasis kintamasis tai daro. Norėdami sukurti csv failą, naudojame plėtinį .csv. Antrasis kintamasis naudojamas perrašyti. Trečias argumentas yra klaidingas teigiant, kad tai nėra dvejetainis failas.

Kilpose mes pakeičiame „debug.print“ į „filelist.Write“ metodą, kad kiekvienas failo kelias būtų parašytas sukurtame faile.

Taigi taip, vaikinai, taip galite naudoti „FileSystemObject“. FSO gali būti naudojamas daugeliui kitų dalykų, kuriuos aptarsime būsimuose straipsniuose. Jei turite kokių nors abejonių dėl šio FSO užklausos straipsnio, paklauskite manęs žemiau esančiame komentarų skyriuje.

Darbo su „Excel VBA UserForms“ pradžia| Aš paaiškinsiu, kaip sukurti formą „Excel“, kaip naudoti VBA įrankių rinkinį, kaip tvarkyti vartotojo įvestis ir galiausiai, kaip išsaugoti vartotojo įvestis. Mes pereisime šias temas naudodami vieną pavyzdį ir žingsnis po žingsnio vadovą.

VBA kintamieji „Excel“| VBA reiškia „Visual Basic for Applications“. Tai programavimo kalba iš „Microsoft“. Jis naudojamas su „Microsoft Office“ programomis, tokiomis kaip „MSExcel“, „MS-Word“ ir „MS-Access“, tuo tarpu VBA kintamieji yra konkretūs raktiniai žodžiai.

„Excel VBA“ kintamoji apimtis| Visose programavimo kalbose mes turime kintamosios prieigos specifikatorius, kurie apibrėžia, iš kur galima pasiekti apibrėžtą kintamąjį. „Excel VBA“ nėra išimtis. VBA taip pat turi apimties specifikacijas.

ByRef ir ByVal argumentai | Kai argumentas perduodamas kaip „ByRef“ argumentas kitam padaliniui ar funkcijai, siunčiama tikrojo kintamojo nuoroda. Bet kokie kintamojo kopijos pakeitimai atsispindės pradiniame argumente.

Ištrinkite lapus be patvirtinimo raginimų naudodami „Microsoft Excel“ VBA | Kadangi trinate lapus naudodami VBA, žinote, ką darote. Norite pasakyti „Excel“ nerodyti šio įspėjimo ir ištrinti prakeiktą lapą.

Pridėkite ir išsaugokite naują darbaknygę naudodami „Microsoft Excel 2016“ VBA| Šiame kode pirmiausia sukūrėme nuorodą į darbaknygės objektą. Ir tada mes jį inicijavome naudodami naują darbo knygos objektą. Šio metodo pranašumas yra tas, kad galite lengvai atlikti operacijas su šia nauja darbaknyge. Kaip išsaugoti, uždaryti, ištrinti ir pan

Rodyti pranešimą „Excel“ VBA būsenos juostoje| „Excel“ būsenos juosta gali būti naudojama kaip kodo monitorius. Kai jūsų VBA kodas yra ilgas ir atliekate kelias užduotis naudodami VBA, dažnai išjungiate ekrano atnaujinimą, kad nematytumėte to ekrano mirgėjimo.

Išjunkite įspėjamuosius pranešimus naudodami VBA programoje „Microsoft Excel 2016“| Šis kodas ne tik išjungia VBA įspėjimus, bet ir padidina kodo laiko efektyvumą. Pažiūrėkime, kaip.

Populiarūs straipsniai:

50 „Excel“ nuorodų, skirtų produktyvumui padidinti | Greičiau atlikite savo užduotį. Šie 50 sparčiųjų klavišų leis dar greičiau dirbti naudojant „Excel“.

„VLOOKUP“ funkcija „Excel“ | Tai yra viena iš dažniausiai naudojamų ir populiariausių „Excel“ funkcijų, naudojama norint ieškoti vertės iš įvairių diapazonų ir lapų.

COUNTIF „Excel 2016“ | Naudodami šią nuostabią funkciją, suskaičiuokite reikšmes su sąlygomis. Norint suskaičiuoti konkrečias vertes, nereikia filtruoti duomenų. Skaitiklio funkcija yra būtina norint paruošti prietaisų skydelį.

Kaip naudoti „SUMIF“ funkciją „Excel“ | Tai dar viena esminė prietaisų skydelio funkcija. Tai padeda apibendrinti vertes konkrečiomis sąlygomis.

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave