FileSystemObjectia käytetään järjestelmään liitettyjen kansioiden ja tiedostojen kanssa. Voimme käyttää sitä tiedostojen, kansioiden, aseman ja tekstivirtojen käyttämiseen. Se ei voi vain käyttää tiedostoja, kansioita ja tekstitiedostoja, vaan voi myös luoda. Nämä toiminnot eivät rajoitu järjestelmän kiintolevyyn, vaan mihin tahansa tiedostoon liitettyyn laitteeseen. Se tarkoittaa, että voit käyttää kynä-, cd -levyjä tai virtuaalisesti kytkettyjä verkkoasemia.
Seuraavat toiminnot voimme tehdä VBA: n FileSystemObjectin avulla:
Tekstitiedostojen luomiseen, avaamiseen, lukemiseen, kirjoittamiseen ja poistamiseen.
Kansioiden lisäämiseen, muuttamiseen ja poistamiseen.
Tiedostojen ja kansioiden toistaminen.
Tiedostojen tai kansioiden kopiointi ja siirtäminen muihin paikkoihin.
Sen tarkistamiseksi, onko tiedosto tai kansio olemassa tai ei
Kuinka pääsen FileSystemObjectiin VBA: ssa?
Tiedostojärjestelmäobjekti on osa Microsoft Scripting Runtime Library -kirjastoa. Päästäksemme FileSystemObjectiin meidän on yhdistettävä tai lisättävä viittaus kohteeseen Microsoft Scripting Runtime Library tai Scrrun.dll.
Huomautus: FileSystemObject ei tue binaaritiedostojen käyttöä, koska Scrrun.dll tukee tiedostojen luomista ja käsittelyä TextStream -objektin avulla.
On kaksi tapaa luoda FileSystemObject VBA: ssa:
1: FSO -objektin luominen CreateObject -menetelmällä:
Tätä menetelmää käyttäen ilmoitamme ensin muuttuvan objektityypin. Aseta sitten FSO -objektin viittaus kyseiseen muuttujaan CreateObjectin avulla:
Sub LearnFso () 'Objektimuuttujan Dim fso luominen objektina' Luo FileSystemObject käyttämällä Create Object Method Set fso = CreateObject ("Scripting.FileSystemObject") Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR" ) End Sub
Tämä menetelmä on dynaaminen ja siirrettävissä. Se tarkoittaa, että jos jaat koodin muille järjestelmille, tämä koodi toimii täydellisesti. Ei ole väliä, mikä Microsoft Runtime Scripting -versio sinulla on.
Ainoa haittapuoli on, että et voi nähdä VBA: n tarjoamaa intellisenseä. Sinun on luotettava tietosi käyttääksesi kaikkia FileSystemObjectin ominaisuuksia ja menetelmiä.
2: FSO -objektin luominen lisäämällä viitettä Microsoft Runtime Scripting -ohjelmaan
Voit luoda FileSystemObjectin suoraan VBA: ssa käyttämällä uutta avainsanaa. Tätä varten sinun on lisättävä viittaus uusimpaan Microsoft Scripting Runtime -järjestelmään järjestelmässäsi.
Jos haluat lisätä viitteen, siirry työkaluvalikon viittausvaihtoehtoon. Täältä löydät Microsoft Scripting Runtime dll. Tarkista se ja napsauta OK.
Nyt olet valmis luomaan ja käyttämään FSO -objektia.
Sub LearnFso () Dim fso uutena FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") Loppuosa
Tai
Sub LearnFso () Dim fso kuten FileSystemObject Set fso = New FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") Loppuosa
Molemmat toimivat hyvin.
Tämän menetelmän suuri etu on, että näet VBA: n älykkyyden. VBA näyttää kaikki fso -objektin ominaisuudet ja menetelmät. Se kertoo myös, millaisia muuttujia se hyväksyy ja millaista arvoa se palauttaa.
Jos jaat tämän koodin muille järjestelmille, sinun on kehotettava heitä lisäämään viittaus työkalujen komentosarjan suoritusaikaan, muuten he saavat kääntämisvirheen, jota käyttäjän määrittämää tyyppiä ei ole määritetty. Joten se on kuin muiden ohjelmointikielien tuonti.
Huomaa, että FSO ei ole avainsana. Voit käyttää sitä muuttujan nimenä. Se on vain yleinen tapa nimetä tiedostojärjestelmäobjekti fso: ksi. Siksi jotkut ihmiset sekoittavat sen avainsanaksi.
Molemmilla FSO -objektien luomistavoilla on etunsa ja haittansa, jotka olen maininnut selittäessäni niitä. Käytä siis tarpeidesi mukaan. Tässä artikkelissa käytän toista tapaa luoda FileSystemObject.
Nyt kun tiedämme, miten luodaan FileSystemObject VBA: han, käytämme tätä tietoa mielekkäiden tehtävien suorittamiseen. Eli siirrytään esimerkkeihin.
Esimerkki 1: Hanki kaikki alikansio määritettyyn kansioon
Ensimmäinen esimerkki, jonka näemme, on saada alikansioiden nimet tietystä kansiosta.
Sub LearnFso () 'korostavat muuttujat, joita tarvitsemme Dim fso As FileSystemObject' Muuttuja FileSystemObject Dim fdr kuin kansio 'Muuttuja peruskansiolle Dim subfdr As Folder' Muuttuja alikansioille Dim fdrpath As String 'tallentaaksesi tukiaseman polun kansio 'Objektien alustaminen fdrpath = "D: \ Downloads"' Kansion ilmoittaminen Set fso = New FileSystemObject 'Fso -objektin luominen Aseta fdr = fso.GetFolder (fdrpath)' Tietyn kansion kansio -objektin luominen 'silmukka alikansioiden nimi Jokaiselle alihakemistolle In fdr.SubFolders Debug.Print subfdr.
Kun suoritat yllä olevan koodin, saat tämän.
Joo! Se on minun latauskansio. Älä keskity siihen.
Kuinka tämä toimi?
Ymmärrämme vaiheittain:
1: Tarvittavien muuttujien vähentäminen
Dim fso Kuten FileSystemObject 'Muuttuja FileSystemObject
Dim fdr kansiona 'Muuttuja peruskansioon
Dim subfdr as Folder 'Muuttuja alikansioille
Ilmoitimme ensin kaikki muuttujat, joita tarvitsemme tässä esimerkissä. Ensimmäinen muuttuja on tietysti fso tiedostojärjestelmän objektina. Kaksi muuttujaa fdr ja subfdr ovat kansiotyyppisiä. Käytämme fso -objektia luomaan tiedostotyyppiobjektin sen sijaan, että luotaisiin suoraan. The fdrpath is use -muuttujaa käytetään pitämään sen peruskansion polku, josta haluamme saada kaikki alikansiot.
2: Esineiden alustaminen
fdrpath = "D: \ Lataukset" 'Kansion ilmoittaminen
Aseta fso = New FileSystemObject 'Fso -objektin luominen
Aseta fdr = fso.GetFolder (fdrpath) 'Luodaan kansion kansio -objekti
Tässä vaiheessa alustimme kaikki ilmoittamamme objektit paitsi subfdr. Huomaa, että olemme alustaneet fdr -tiedostomuuttujan fso -objektien menetelmällä getFolder.
FileSystemObjectin GetFolder () -menetelmä ottaa kansion tai hakemiston polun merkkijonoksi ja palauttaa tiedostotyypin objektin.
3: silmukka saadaksesi kaikki alikansioiden nimet kansio -objektiin
Jokaiselle alihakemistolle Fdr.SubFolders
Virheenkorjaus Tulosta alitiedoston nimi
Seuraava subfdr
Tässä olemme käyttäneet jokaista silmukkaa silmukkaan jokaisen fdr -tiedosto -objektin alikansion läpi. Käytimme silmukkaan tiedosto -objektin SubFolders -ominaisuutta.
Käytämme name -ominaisuutta kunkin alikansion nimen hakemiseen. Ja se on tehty.
Esimerkki 2: Hae kaikki tiedostopolut kansioon ja sen alikansioihin
Jotta saisimme kaikki kansion ja sen alikansion tiedostojen kaikki polut tai täysin pätevät nimet, meidän on lisättävä muutama rivi esimerkkikoodissa 1.
Sub LearnFso () Dim fso Kuten FileSystemObject Dim fdr As Folder 'Muuttuja peruskansioon Dim subfdr As Folder' Muuttuja alikansioille Dim fdrpath As String 'tallentaaksesi peruskansion Dim fl As File' tallentaaksesi tiedostoobjektin fdrpath = "D: \ lataa" Aseta fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) '-silmukka, jotta saat kaikki alikansioiden nimet Jokaiselle alitiedostolle In fdr.SubFolders For Every fl In subfdr.Files' to loop through each file Debug.Print fl.Path 'hakee tiedoston nimen Seuraava fl Seuraava subfdr', jos haluat hakea pääkansion tiedostot Jokaiselle fl In fdr.Files Debug.Print fl.Path Seuraava fl End Sub
Folder.Files () -menetelmä on menetelmä, joka palauttaa tiedostot alikansioon. File.Path () -menetelmä palauttaa tiedoston koko osoitteen.
Meillä jokaisella on sisäinen silmukka, joka toistetaan pääkansion ja sen kansion alikansion kaikkien tiedostojen läpi.
Pääkansion tiedostojen saamiseksi käytämme toista silmukkaa.
Esimerkki 3: Tallenna tiedostonimet CSV -tiedostoon.
Edellisessä esimerkissä opimme tulostamaan tiettyjen kansioiden tiedostopolut välittömään ikkunaan. Tässä esimerkissä opimme kuinka tallentaa polut CSV -tiedostoon. Tätä varten meidän on vain lisättävä muutama rivi koodiin. Katso alla olevat rohkeat koodirivit.
Sub LearnFso () Dim fso kuten FileSystemObject Dim fdr As Folder 'Muuttuja peruskansioon Dim subfdr As Folder' Muuttuja alikansioille Dim fdrpath As String 'tallentaaksesi peruskansion Dim fl As File' tallentaaksesi tiedostoobjektin Dim fileList Kuten TextStream 'A texttream -objekti 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) '-silmukka, jos haluat saada kaikkien alikansioiden nimet jokaiselle alitiedostolle In fdr.SubFolders For Every fl In subfdr.Files' kierrättää jokaisen tiedoston fileList.Write fl.Path & "," Next fl Next subfdr "saadaksesi pääkansion tiedostot Jokaiselle fl In fdr.Files fileList.Write fl.Path & "," Next fl fileList.Close End Sub
Tässä olemme ilmoittaneet uuden FileStream -tyyppisen objektin nimeltä fileList
Alustimme tiedostoluettelomuuttujan tiedostovirtaobjektilla alla olevan rivin avulla.
Aseta fileList = fso.CreateTextFile (fdrpath & "\ File List in This Folder.csv", True, False)
Käytämme FSO: n CreateTextFile -menetelmää FileStream -objektin luomiseen. Se luo tekstitiedoston. Tämä menetelmä hyväksyy tiedoston nimen, jolla on täydellinen polku. Ensimmäinen muuttuja tekee niin. Luomme csv -tiedoston .csv -laajennuksella. Toista muuttujaa käytetään korvaamiseen. Kolmas argumentti on väärä väittäessään, että se ei ole binääritiedosto.
Silmukoissa korvataan debug.print tiedostolistalla.listalla.Kirjoita tapa kirjoittaa jokainen tiedostopolku luotuun tiedostoon.
Joten kyllä kaverit, näin voit käyttää FileSystemObjectia. FSO: ta voidaan käyttää moniin muihin asioihin, joista keskustelemme tulevissa artikkeleissa. Jos sinulla on epäilyksiä tästä FSO -aiheisen kyselyn artikkelista, kysy minulta alla olevassa kommenttiosassa.
Excel VBA UserForms -ohjelman käytön aloittaminen| Selitän, miten Excel -lomake luodaan, kuinka VBA -työkalupakkia käytetään, miten käyttäjän syötteitä käsitellään ja lopuksi kuinka tallennetaan käyttäjän syötteet. Käymme nämä aiheet läpi yhden esimerkin ja vaiheittaisen oppaan avulla.
VBA -muuttujat Excelissä| VBA tarkoittaa Visual Basic for Applications. Se on Microsoftin ohjelmointikieli. Sitä käytetään Microsoft Office -sovelluksissa, kuten MSExcel, MS-Word ja MS-Access, kun taas VBA-muuttujat ovat erityisiä avainsanoja.
Excel VBA -muuttujan laajuus| Kaikilla ohjelmointikielillä on muuttujan käyttöoikeusmäärittelyt, jotka määrittävät, mistä määriteltyä muuttujaa voidaan käyttää. Excel VBA ei ole poikkeus. Myös VBA: ssa on laajuuden määrittäjiä.
ByRef- ja ByVal -argumentit | Kun argumentti välitetään ByRef -argumenttina toiselle ala- tai funktiolle, todellisen muuttujan viite lähetetään. Kaikki muuttujan kopioon tehdyt muutokset näkyvät alkuperäisessä argumentissa.
Poista taulukot ilman vahvistuskehotteita käyttämällä VBA: ta Microsoft Excelissä | Koska poistat arkkeja VBA: n avulla, tiedät mitä olet tekemässä. Haluat kertoa Excelille, ettei se näytä tätä varoitusta ja poista kirottu arkki.
Lisää ja tallenna uusi työkirja VBA: n avulla Microsoft Excel 2016: ssa| Tässä koodissa loimme ensin viittauksen työkirjaobjektiin. Ja sitten alustimme sen uudella työkirjaobjektilla. Tämän lähestymistavan etuna on, että voit tehdä tämän uuden työkirjan toimintoja helposti. Kuten tallentaminen, sulkeminen, poistaminen jne
Näytä viesti Excel VBA -tilapalkissa| Excelin tilariviä voidaan käyttää koodinäytönä. Kun VBA -koodisi on pitkä ja teet useita tehtäviä VBA: n avulla, poistat usein näytön päivityksen käytöstä, jotta et näe sitä välkkyvää.
Poista varoitusviestit käytöstä VBA: n avulla Microsoft Excel 2016: ssa| Tämä koodi ei vain poista VBA -hälytyksiä käytöstä, vaan myös lisää koodin aikatehokkuutta. Katsotaanpa miten.
Suosittuja artikkeleita:
50 Excel -pikanäppäintä tuottavuuden lisäämiseksi | Nopeuta tehtävääsi. Nämä 50 pikanäppäintä tekevät työskentelystäsi entistä nopeampaa Excelissä.
VLOOKUP -toiminto Excelissä | Tämä on yksi eniten käytetyistä ja suosituimmista Excel -toiminnoista, jota käytetään arvon etsimiseen eri alueilta ja arkeilta.
COUNTIF Excel 2016: ssa | Laske arvot olosuhteilla käyttämällä tätä hämmästyttävää toimintoa. Sinun ei tarvitse suodattaa tietoja laskeaksesi tiettyjä arvoja. Laskutoiminto on välttämätön kojelaudan valmistelemiseksi.
SUMIF -toiminnon käyttäminen Excelissä | Tämä on toinen kojelaudan olennainen toiminto. Tämä auttaa sinua laskemaan yhteen arvot tietyissä olosuhteissa.