FileSystemObjecti kasutatakse süsteemiga ühendatud kaustade ja failidega töötamiseks. Saame seda kasutada failidele, kaustadele, draivile ja tekstivoogudele juurdepääsemiseks. See ei pääse mitte ainult failidele, kaustadele ja tekstifailidele, vaid saab ka luua. Need toimingud ei piirdu süsteemi kõvakettaga, vaid iga failiga ühendatud seadmega. See tähendab, et pääsete juurde pliiatsite, CD -de või virtuaalselt ühendatud võrgudraividele.
Need on toimingud, mida saame teha VBA FileSystemObjecti abil:
Tekstifailide loomiseks, avamiseks, lugemiseks, kirjutamiseks ja kustutamiseks.
Kaustade lisamiseks, muutmiseks ja kustutamiseks.
Failide ja kaustade kordamine.
Failide või kaustade kopeerimiseks ja teisaldamiseks mujale.
Kontrollimiseks, kas fail või kaust on kohas või mitte
Kuidas pääseda juurde FileSystemObjectile VBA -s?
Failisüsteemi objekt on osa Microsoft Scripting Runtime Libraryst. FileSystemObjecti juurde pääsemiseks peame ühendama või lisama viite Microsoft Scripting Runtime Library või Scrrun.dll.
Märkus. FileSystemObject ei toeta binaarfailide toimimist, kuna Scrrun.dll toetab failide loomist ja manipuleerimist TextStream Object abil.
FileSystemObject loomiseks VBA -s on kaks meetodit:
1: FSO objekti loomine CreateObject meetodi abil:
Selle meetodi abil deklareerime kõigepealt muutuva objekti tüübi. Seejärel seadistage FSO objekti viide sellele muutujale, kasutades CreateObjecti:
Sub LearnFso () 'Objekti muutuja Dim fso loomine objektina' Looge FileSystemObject, kasutades Create Object Method Set fso = CreateObject ("Scripting.FileSystemObject") Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR" ) End Sub
See meetod on dünaamiline ja ülekantav. See tähendab, et kui jagate koodi teiste süsteemidega, töötab see kood suurepäraselt. Pole tähtis, milline Microsoft Runtime Scripting versiooni teil on.
Ainus puudus on see, et te ei näe VBA pakutavat intellisense'i. FileSystemObject kõigi omaduste ja meetodite kasutamiseks peate sõltuma oma teadmistest.
2: FSO -objekti loomine, lisades viite Microsofti käitusaja skriptimisele
Uue märksõna abil saate VBA -s FileSystemObjecti otse luua. Selleks peate lisama viite oma süsteemi uusimale Microsoft Scripting Runtime'ile.
Viite lisamiseks avage tööriistade menüü viited. Siit leiate Microsoft Scripting Runtime dll. Kontrollige seda ja klõpsake nuppu OK.
Nüüd olete valmis looma ja kasutama FSO objekti.
Sub LearnFso () Dim fso kui uus FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") Lõpu alam
Või
Sub LearnFso () Dim fso kui FileSystemObject Set fso = New FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") Lõpu alam
Mõlemad toimivad hästi.
Selle meetodi suur eelis on see, et näete VBA intelligentsust. VBA näitab teile kõiki fso objekti omadusi ja meetodeid. Samuti ütleb see, milliseid muutujaid ta aktsepteerib ja millist väärtust ta tagastab.
Kui jagate seda koodi teiste süsteemidega, peate neile ütlema, et nad lisavad tööriistadelt viite skriptide käitusajale, vastasel juhul kuvatakse neile kompileerimisviga, mida kasutaja määratud tüüp pole määratletud. Nii et see on nagu teiste programmeerimiskeelte importimine.
Pange tähele, et FSO ei ole märksõna. Saate seda kasutada muutuja nimena. See on lihtsalt kokkulepe failisüsteemi objekti nimetamiseks fso -ks. Seetõttu ajavad mõned inimesed seda märksõnaga segi.
Mõlemal FSO objektide loomise meetodil on oma eelised ja puudused, mida olen nende selgitamisel maininud. Nii et kasutage vastavalt oma vajadustele. Selles artiklis kasutan FileSystemObject loomise teist meetodit.
Nüüd, kui me teame, kuidas VBA -s FileSystemObjecti luua, kasutame neid teadmisi mõne sisuka ülesande täitmisel. Ma mõtlen, et lähme näidete juurde.
Näide 1: hankige kõik alamkaust määratud kausta
Esimene näide, mida näeme, on alamkausta nimede hankimine konkreetsest kaustast.
Sub LearnFso () 'kahandavad muutujad, mida vajame Dim fso As FileSystemObject' Muutuja FileSystemObject Dim fdr kui kaust 'Muutuja baaskausta Dim alamfdr Kaustana' Muutuja alamkaustade jaoks Dim fdrpath As String 'baasi tee salvestamiseks kaust 'Objektide initsialiseerimine fdrpath = "D: \ Downloads"' Kausta deklareerimine Set fso = New FileSystemObject 'Fso objekti loomine Määra fdr = fso.GetFolder (fdrpath)' Antud kausta kaustaobjekti loomine 'loop, et saada kõik alamkaustade nimetus iga alamfaili jaoks
Kui käivitate ülaltoodud koodi, saate selle.
Jah! See on minu allalaadimiskaust. Ärge keskenduge sellele.
Kuidas see toimis?
Mõistame samm -sammult:
1: vajalike muutujate vähendamine
Dim fso As FileSystemObject 'Muutuja FileSystemObject jaoks
Dim fdr kui kaust 'Baaskausta muutuja
Dim subfdr as Folder 'Muutuja alamkaustade jaoks
Kõigepealt deklareerisime kõik muutujad, mida selles näites vajame. Esimene muutuja on muidugi fso failisüsteemi objektina. Kaks muutujat fdr ja subfdr on kausta tüüpi. Kasutame fso -objekti failitüübi objekti loomiseks, mitte otse loomiseks. The fdrpath is use muutujat kasutatakse selle aluskausta tee hoidmiseks, mille kõik alamkaustad tahame saada.
2: objektide sisestamine
fdrpath = "D: \ Allalaadimised" 'Kausta deklareerimine
Set fso = New FileSystemObject 'Fso objekti loomine
Määra fdr = fso.GetFolder (fdrpath) 'Antud kausta kaustaobjekti loomine
Selles etapis lähtestasime kõik deklareeritud objektid, välja arvatud subfdr. Pange tähele, et oleme muutnud fdr muutuja intialiseerinud, kasutades fso objektide meetodit getFolder.
FileSystemObjecti meetod GetFolder () võtab kausta või kataloogi tee stringina ja tagastab failitüübi objekti.
3: loop, et saada kõik alamkaustade nimed kaustaobjektis
Iga alamfaili fdr.SubFolders jaoks
Silumine. Prindi alamfaili nimi
Järgmine alamfail
Siin oleme iga ahela jaoks kasutanud a, et loopida fdr -faili objekti igast alamkaustast läbi. Loopimiseks kasutasime failiobjekti atribuuti Alamkaustad.
Iga alamkausta nimede saamiseks kasutame nime atribuuti. Ja seda tehakse.
Näide 2: hankige kõik failiteed kausta ja selle alamkaustadesse
Kausta ja selle alamkausta kõigi failide kõigi teede või täielikult kvalifitseeritud nimede saamiseks peame näite 1 koodis lisama veel paar rida.
Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Muutuja baaskausta Dim subfdr As Folder' Muutuja alamkaustade jaoks Dim fdrpath As String 'baaskausta tee salvestamiseks Dim fl As File' failiobjekti salvestamiseks fdrpath = "D: \ downloads" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) 'loop, et saada kõik alamkaustade nimed iga alamfaili jaoks In fdr.SubFolders Iga fl in subfdr.Files' iga faili jaoks Debug.Print fl.Path 'failinime saamine Järgmine fl Järgmine subfdr', et saada põhikausta failid Iga fl jaoks fdr.Files Debug.Print fl.Path Järgmine fl End Sub
Meetod Folder.Files () on meetod, mis tagastab alamkausta failid. Meetod File.Path () tagastab faili täieliku aadressi.
Meil kõigil on sisemine silmus, et itereerida läbi kõik põhikausta ja selle kausta alamkaustas olevad failid.
Põhikausta failide saamiseks kasutame teist tsüklit.
Näide 3: salvestage failinimed CSV -faili.
Eelmises näites õppisime, kuidas printida vahekaardile konkreetsete kaustade failiteed. Selles näites õpime, kuidas need teed CSV -faili salvestada. Selleks peame koodi lisama vaid paar rida. Vaadake allolevaid julgeid koodiridu.
Sub LearnFso () Dim fso kui FileSystemObject Dim fdr As Folder 'Muutuja baaskausta Dim subfdr As Folder' Muutuja alamkaustade jaoks Dim fdrpath As String 'baaskausta tee salvestamiseks Dim fl As File' failiobjekti salvestamiseks Dim fileList TextStream 'A texttream objekt fdrpath = "D: \ downloads" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) Set fileList = fso.CreateTextFile (fdrpath & "\ File List in this Folder.csv", Tõsi, Väär) 'silmus, et saada kõik alamkaustade nimed iga alamfaili jaoks Alamfailis Fdr.SubFolders Iga fl jaoks alamfdr.Failid', et vaadata läbi iga fail fileList.Write fl.Path & "," Next fl Next subfdr ", et põhikausta failid Iga fl jaoks Fdr.Files fileList.Write fl.Path & "," Järgmine fl fileList.Close End Sub
Siin oleme kuulutanud uue FileStreami tüüpi objekti nimega fileList
Vormistasime faililoendi muutuja failivoolu objektiga, kasutades allolevat rida.
Määra fileList = fso.CreateTextFile (fdrpath & "\ File List in This Folder.csv", True, False)
FileStreami objekti loomiseks kasutame FSO meetodit CreateTextFile. See loob tekstifaili. See meetod aktsepteerib täieliku teega faili nime. Esimene muutuja teeb seda. Kasutame CSV -faili loomiseks laiendit .csv. Teist muutujat kasutatakse ülekirjutamise lubamiseks. Kolmas argument on vale, et deklareerida, et see pole binaarfail.
Silmustes asendame debug.print faililoendiga. Kirjutamismeetod iga failitee kirjutamiseks loodud failis.
Nii et jah, poisid, nii saate kasutada FileSystemObjecti. FSO -d saab kasutada paljude muude asjade jaoks, millest me tulevastes artiklites räägime. Kui teil on selle FSO -ga seotud päringu artikli osas kahtlusi, küsige minult allpool kommentaaride jaotises.
Excel VBA UserFormsiga alustamine| Selgitan, kuidas Excelis vormi luua, kuidas VBA tööriistakasti kasutada, kuidas kasutaja sisendeid käsitseda ja lõpuks, kuidas kasutaja sisendeid salvestada. Vaatame need teemad läbi ühe näite ja samm -sammult juhise abil.
VBA muutujad Excelis| VBA tähistab Visual Basic for Applications. See on Microsofti programmeerimiskeel. Seda kasutatakse koos Microsoft Office'i rakendustega, nagu MSExcel, MS-Word ja MS-Access, samas kui VBA muutujad on spetsiifilised märksõnad.
Exceli VBA muutuv ulatus| Kõigis programmeerimiskeeltes on meil muutuva juurdepääsu spetsifikatsioonid, mis määravad, kust saab määratud muutujale juurde pääseda. Excel VBA pole erand. Ka VBA -l on ulatuse täpsustajad.
ByRef ja ByVal argumendid | Kui argument edastatakse ByRef argumendina teisele alam- või funktsioonile, saadetakse tegeliku muutuja viide. Kõik muutuja koopiasse tehtud muudatused kajastuvad algses argumendis.
Kustutage lehed ilma kinnitusviipadeta, kasutades Microsoft Excelis VBA -d | Kuna kustutate lehti VBA abil, teate, mida teete. Sooviksite Excelil seda hoiatust mitte kuvada ja neetud leht kustutada.
Uue töövihiku lisamine ja salvestamine Microsoft Excel 2016 VBA abil| Selles koodis lõime esmalt viite töövihiku objektile. Ja siis vormistasime selle uue töövihikuobjektiga. Selle lähenemisviisi eeliseks on see, et saate selle uue töövihikuga hõlpsalt toiminguid teha. Nagu salvestamine, sulgemine, kustutamine jne
Kuva teade Exceli VBA olekuribal| Exceli olekuriba saab kasutada koodimonitorina. Kui teie VBA -kood on pikk ja teete VBA -ga mitmeid ülesandeid, keelate sageli ekraani värskendamise, nii et te ei näe seda ekraani vilkumist.
Lülitage hoiatussõnumid välja Microsoft Excel 2016 VBA abil| See kood mitte ainult ei luba VBA hoiatusi, vaid suurendab ka koodi ajakasutust. Vaatame, kuidas.
Populaarsed artiklid:
50 Exceli otseteed tootlikkuse suurendamiseks | Saa oma ülesandega kiiremini hakkama. Need 50 otseteed aitavad teil Excelis veelgi kiiremini töötada.
Funktsioon VLOOKUP Excelis | See on üks enim kasutatud ja populaarsemaid Exceli funktsioone, mida kasutatakse erinevate vahemike ja lehtede väärtuse otsimiseks.
COUNTIF Excelis 2016 | Loendage väärtused tingimustega, kasutades seda hämmastavat funktsiooni. Te ei pea oma andmeid teatud väärtuste loendamiseks filtreerima. Countif funktsioon on armatuurlaua ettevalmistamisel hädavajalik.
Funktsiooni SUMIF kasutamine Excelis | See on veel üks armatuurlaua oluline funktsioon. See aitab teil teatud tingimustel väärtusi kokku võtta.