Mikä on FileSystemObject (FSO) ja miten sitä käytetään VBA Excelissä?

Fb-Button

tiedostojärjestelmäobjektia käytetään toimimaan järjestelmään liitettyjen kansioiden ja tiedostojen kanssa. Voimme käyttää sitä käyttää tiedostoja, kansioita, asema, ja tekstivirtoja. Se ei voi vain käyttää tiedostoja, kansioita ja tekstitiedostoja, mutta voi myös luoda. Nämä toiminnot eivät rajoitu järjestelmän kiintolevylle, vaan mihin tahansa tiedostoon liitettyyn laitteeseen. Se tarkoittaa, että voit käyttää pen-asemia, cd-ROM-levyjä tai virtuaalisesti liitettyjä verkkoasemia.

näitä operaatioita voimme tehdä käyttämällä FileSystemObject in VBA:

tekstitiedostojen luomiseen, avaamiseen, lukemiseen, kirjoittamiseen ja poistamiseen.

kansioiden lisäämiseen, muuttamiseen ja poistamiseen.

iteroidaan tiedostojen ja kansioiden läpi.

tiedostojen tai kansioiden kopioimiseen ja siirtämiseen muihin paikkoihin.

tarkistaaksesi, onko tiedosto tai kansio olemassa sijainnissa

Kuinka käyttää FileSystemObject-kansiota VBA: ssa?

tiedostojärjestelmäobjekti on osa Microsoft Scripting Runtime-kirjastoa. Jos haluat käyttää Tiedostojärjestelmäobjektia, meidän on yhdistettävä tai lisättävä viittaus Microsoft Scripting Runtime-kirjastoon tai Scrruniin.DLL.

Huomautus: Tiedostojärjestelmämobject ei tue binääritiedostojen toimintaa, koska Scrrun.dll tukee tiedostojen luomista ja manipulointia TextStream-objektin avulla.

VBA: ssa on kaksi tapaa luoda FileSystemObject:

1: luodaan FSO-objekti CreateObject-menetelmällä:

tällä menetelmällä julistamme ensin muuttuvan objektin tyypin. Aseta sitten FSO-objektin viite kyseiseen muuttujaan CreateObject-ohjelmalla:

Sub LearnFso() 'Creating the object variable Dim fso As Object 'Create the FileSystemObject using 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, jos jaat koodin muihin järjestelmiin, tämä koodi toimii täydellisesti. Sillä ei ole väliä, mikä versio Microsoft Runtime Scripting versio sinulla on.

ainoa haittapuoli on se, että VBA: n tarjoamaa intellisenseä ei voi nähdä. Sinun täytyy luottaa tietosi käyttää kaikkia ominaisuuksia ja menetelmiä FileSystemObject.

2: Luodaan FSO objekti lisäämällä viittaus Microsoft Runtime Scripting

voit suoraan luoda Tiedostojärjestelmäobject VBA käyttämällä uutta avainsanaa. Tätä varten sinun täytyy lisätä viittaus viimeisimpään Microsoft Scripting Runtime järjestelmään.

Jos haluat lisätä viitteen, siirry Työkalut-valikon viittausasetukseen. Tässä, löytää Microsoft Scripting Runtime dll. Tarkista se ja klikkaa OK.

nyt olet valmis luomaan ja käyttämään FSO-objektia.

Sub LearnFso() Dim fso as new FileSystemObject Debug.Print fso.GetBaseName("E:\MTR\Feb'18 MTR") End Sub

tai

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

molemmat toimivat hyvin.

menetelmän suuri etu on se, että VBA: n älykkyys näkyy. VBA näyttää kaikki ominaisuudet ja menetelmät FSO objektin. Se kertoo myös, millaisia muuttujia se hyväksyy ja millaisen arvon se palauttaa.

Jos jaat tämän koodin muille järjestelmille, sinun on käskettävä niitä lisäämään viittaus Skriptausajoon työkaluista, muuten he saavat käännösvirheen, että käyttäjän määrittelemää tyyppiä ei ole määritelty. Se on siis kuin muiden ohjelmointikielien tuomista.

huomaa, että FSO ei ole avainsana. Voit käyttää sitä muuttujan nimi. Se on vain tapa nimetä filesystemobject FSO: ksi. Siksi jotkut ihmiset sekoittavat sen avainsanaksi.

molemmilla FSO-olioiden luomismenetelmillä on etunsa ja haittansa, jotka olen maininnut niitä selittäessäni. Käytä siis tarpeesi mukaan. Tässä artikkelissa, aion käyttää toista tapaa luoda FileSystemObject.

nyt kun osaamme luoda Tiedostojärjestelmäobjektin VBA: ssa, käytetään tätä tietoa tehdessämme joitakin mielekkäitä tehtäviä. Hypätäänpä esimerkkeihin.

Esimerkki 1: Hanki kaikki alikansiot tietyssä kansiossa

ensimmäinen esimerkki, jonka näemme, on saada alikansioiden nimet tietystä kansiosta.

Sub LearnFso()' decaring variables that we will need Dim fso As FileSystemObject ' Variable for the FileSystemObject Dim fdr As Folder ' Variable for the base folder Dim subfdr As Folder ' Variable for the sub folders Dim fdrpath As String 'to store path of base folder 'Intializing the objects fdrpath = "D:\Downloads" 'Declaring the folder Set fso = New FileSystemObject 'Creating the fso object Set fdr = fso.GetFolder(fdrpath) 'Creating the folder object of given folder 'loop to get all the sub folders name in For Each subfdr In fdr.SubFolders Debug.Print subfdr.Name Next subfdrEnd Sub

kun ajaa yllä olevan koodin tämän mitä saa.

Yeah! Tuo on latauskansioni. Älä keskity siihen.

miten tämä toimi?

ymmärretään vaiheittain:

1: Decaring muuttujia, jotka tarvitsemme

Dim fso Tiedostojärjestelmäobject ’muuttuja Tiedostojärjestelmäobject

Dim fdr kansiona’ muuttuja peruskansiolle

dim subfdr kansiona ’ muuttuja alikansioille

ensin ilmoitimme kaikki muuttujat, joita tarvitsemme tässä esimerkissä. Ensimmäinen muuttuja on tietenkin FSO tiedostona sytem-olio. Kaksi muuttujaa fdr ja subfdr ovat kansiotyyppiä. Käytämme FSO-objektia luodaksemme tiedostotyypin objektin sen sijaan, että luomme suoraan. Fdrpath is use-muuttujaa käytetään pitämään polku peruskansioon, jonka haluamme saada kaikki alikansiot.

2: olioiden Intalisointi

fdrpath = ”D:\Downloads ”’ julistetaan kansio

Set fso = New FileSystemObject ’luodaan FSO-olio

Set FDR = fso.GetFolder (fdrpath) ’luodaan tietyn kansion kansio-objekti

tässä vaiheessa alustimme kaikki julistamamme objektit paitsi subfdr. Huomaa, että olemme intialized FDR tiedostomuuttuja käyttäen fso objektien menetelmä getFolder.

Getfolder () – menetelmä FileSystemObject ottaa kansion tai kansion polun merkkijonona ja palauttaa tiedostotyypin objektin.

3: loop, jolla saadaan kaikki kansioobjektin alikansioiden nimet

jokaiselle fdr: n alikansiolle.Alikansiot

Debug.Tulosta subfdr.Name

Seuraava subfdr

tässä olemme käyttäneet a: ta jokaiselle silmukalle silmukoidaksemme jokaisen FDR-tiedostoobjektin alikansion läpi. Käytimme tiedoston objektin alikansioiden ominaisuutta silmukkaan.

käytämme nimiominaisuutta saadaksemme jokaisen alikansion nimet. Ja se on tehty.

Esimerkki 2: Hanki kaikki tiedostopolut kansioon ja se on alikansioita

saada kaikki polut tai täysin päteviä nimiä kaikki tiedostot kansioon ja se alikansioon, meidän täytyy lisätä muutamia rivejä esimerkissä 1 koodi.

Sub LearnFso()Dim fso As FileSystemObjectDim fdr As Folder ' Variable for the base folderDim subfdr As Folder ' Variable for the sub foldersDim fdrpath As String 'to store path of base folderDim fl As File 'to store file objectfdrpath = "D:\downloads"Set fso = New FileSystemObjectSet fdr = fso.GetFolder(fdrpath)'loop to get all the sub folders name inFor Each subfdr In fdr.SubFolders For Each fl In subfdr.Files 'to loop throgh each file Debug.Print fl.Path 'getting file name Next flNext subfdr'to get the files of main folderFor Each fl In fdr.Files Debug.Print fl.PathNext flEnd Sub

Kansio.Tiedostot () – menetelmä on menetelmä, joka palauttaa tiedostot alikansioon. Kansio.Polku () – menetelmä palauttaa tiedoston täydellisen osoitteen.

meillä jokaisella on sisäinen silmukka, jolla iteroidaan kaikki pääkansion ja sen alikansion tiedostot.

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, miten tallentaa nämä polut CSV-tiedostoon. Jotta voimme tehdä niin, meidän tarvitsee vain lisätä muutamia rivejä koodiin. Katso Bolden koodirivit alta.

Sub LearnFso()Dim fso As FileSystemObjectDim fdr As Folder ' Variable for the base folderDim subfdr As Folder ' Variable for the sub foldersDim fdrpath As String 'to store path of base folderDim fl As File 'to store file objectDim fileList As TextStream 'A textstream objectfdrpath = "D:\downloads"Set fso = New FileSystemObjectSet fdr = fso.GetFolder(fdrpath)Set fileList = fso.CreateTextFile(fdrpath & "\File List in This Folder.csv", True, False)'loop to get all the sub folders name inFor Each subfdr In fdr.SubFolders For Each fl In subfdr.Files 'to loop through each file fileList.Write fl.Path & "," Next flNext subfdr'to get the files of main folderFor Each fl In fdr.Files fileList.Write fl.Path & ","Next fl fileList.CloseEnd Sub

tässä olemme julistaneet uuden tiedostotyypin objektin nimeltä fileList

alustimme filelist-muuttujan tiedostotyypillä alla olevaa riviä käyttäen.

Set fileList = fso.CreateTextFile (fdrpath & ”\tiedostoluettelo tässä kansiossa.csv”, True, False)

käytämme FSO: n CreateTextFile-menetelmää FileStream-objektin luomiseen. Se luo tekstitiedoston. Tämä menetelmä hyväksyy kokonaisen polun sisältävän tiedoston nimen. Ensimmäinen muuttuja tekee niin. Käytämme .csv-laajennus csv-tiedoston luomiseen. Toista muuttujaa käytetään ylikirjoittamisen sallimiseen. Kolmas argumentti on epätosi sen julistamiseksi, että se ei ole binääritiedosto.

silmukoissa korvataan debug.tulosta tiedostolistalla.Kirjoitustapa kirjoittaa jokainen tiedostopolku luodussa tiedostossa.

niin joo kaverit, Näin voit käyttää Tiedostojärjestelmämobject. FSO: ta voidaan käyttää moniin muihin asioihin, joista keskustelemme tulevissa artikkeleissa. Jos sinulla on epäilyksiä tästä artikkelista FSO: n aiheeseen liittyvästä kyselystä, kysy minulta alla olevassa kommenttiosiossa.

Excel VBA UserForms / I: n käytön aloittaminen selittää, miten Exceliin luodaan lomake, miten VBA Toolboxia käytetään, miten käyttäjän syötteitä käsitellään ja lopuksi miten käyttäjän syötteitä tallennetaan. Käymme näitä aiheita läpi yhden esimerkin ja askel askeleelta oppaan avulla.

VBA-muuttujat Excel / VBA: ssa tulee sanoista Visual Basic for Applications. Se on Microsoftin ohjelmointikieli. Sitä käytetään Microsoft Office-sovellusten, kuten MSExcel, MS-Word ja MS-Access, kun taas VBA muuttujat ovat erityisiä avainsanoja.

Excel VBA muuttujan soveltamisala / kaikissa ohjelmointikielissä meillä on muuttujan pääsymääritteet, jotka määrittelevät, mistä määriteltyä muuttujaa voi käyttää. Excel VBA ei ole poikkeus. VBA on myös soveltamisala tarkenteita.

ByRef-ja ByVal-argumentit / kun argumentti siirretään ByRef-argumenttina toiselle Alille tai funktiolle, lähetetään varsinaisen muuttujan viite. Muuttujan kopioon tehdyt muutokset näkyvät alkuperäisessä argumentissa.

Poista sheets ilman vahvistuskutsuja käyttämällä VBA: ta Microsoft Excelissä / koska poistat arkkeja VBA: lla, tiedät mitä teet. Haluat kertoa Excelille, että tätä varoitusta ei saa näyttää ja että kirottu arkki poistetaan.

Lisää ja tallenna uusi työkirja käyttämällä VBA Microsoft Excel 2016 / tässä koodissa loimme ensin viittauksen työkirja-objektiin. Sitten alustimme sen uudella työkirja-objektilla. 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-tilarivillä| Excelissä olevaa tilariviä voidaan käyttää koodimonitorina. Kun VBA-koodi on pitkä ja teet useita tehtäviä käyttämällä VBA, usein poistaa näytön päivitys niin, että et näe, että näyttö välkkyy.

Sammuta varoitusviestit VBA: lla Microsoft Excel 2016: ssa / tämä koodi ei ainoastaan poista VBA-hälytyksiä käytöstä, vaan myös lisää koodin aikatehokkuutta. Katsotaan miten.

Suositut artikkelit:

50 Excel-pikakuvaketta, joilla voit lisätä tuottavuuttasi / nopeuttaa tehtävääsi. Nämä 50 pikakuvaketta saavat sinut työskentelemään entistä nopeammin Excelissä.

Vlookup-funktio Excelissä / tämä on yksi Excelin käytetyimmistä ja suosituimmista funktioista, jolla haetaan arvoa eri alueilta ja arkkeilta.

COUNTIF in Excel 2016 / Count values with conditions using this amazing function. Sinun ei tarvitse suodattaa tietojasi tiettyjen arvojen laskemiseksi. Countif toiminto on välttämätöntä valmistella kojelautaan.

kuinka käyttää SUMIF-toimintoa Excelissä / tämä on toinen kojelaudan oleellinen toiminto. Tämä auttaa sinua summaamaan arvot tietyin ehdoin.

Jätä kommentti