Server FileSystemObject sa používa na prácu s priečinkami a súbormi prepojenými so systémom. Môžeme ho použiť na prístup k súborom, priečinkom, jednotke a textovým streamom. Má nielen prístup k súborom, priečinkom a textovým súborom, ale môže aj vytvárať. Tieto operácie nie sú obmedzené na pevný disk systému, ale na akékoľvek zariadenie pripojené k súboru. To znamená, že máte prístup k jednotkám pera, diskom CD alebo k virtuálne pripojeným sieťovým jednotkám.
Toto sú operácie, ktoré môžeme vykonávať pomocou FileSystemObject vo VBA:
Na vytváranie, otváranie, čítanie, písanie a mazanie textových súborov.
Na pridávanie, úpravu a odstraňovanie priečinkov.
Na iteráciu súborov a priečinkov.
Na kopírovanie a presúvanie súborov alebo priečinkov na iné miesta.
Na kontrolu, či súbor alebo priečinok na mieste existuje alebo nie
Ako získať prístup k FileSystemObject vo VBA?
Objekt systému súborov je súčasťou knižnice Microsoft Scripting Runtime Library. Na prístup k súboru FileSystemObject potrebujeme pripojiť alebo pridať odkaz na súbor Runtime knižnica Microsoft Scripting alebo Scrrun.dll.
Poznámka: Server FileSystemObject nepodporuje prevádzku binárnych súborov, pretože Scrrun.dll podporuje vytváranie a manipuláciu so súbormi pomocou objektu TextStream.
Existujú dva spôsoby vytvorenia FileSystemObject vo VBA:
1: Vytvorenie objektu FSO pomocou metódy CreateObject:
Touto metódou najskôr deklarujeme variabilný typ objektu. Potom nastavte odkaz na objekt FSO na túto premennú pomocou CreateObject:
Sub LearnFso () 'Vytvorenie objektovej premennej Dim fso ako objekt' Vytvorte FileSystemObject pomocou metódy vytvorenia objektu Set fso = CreateObject ("Scripting.FileSystemObject") Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR" ) Koniec pod
Táto metóda je dynamická a prenosná. To znamená, že ak kód zdieľate s inými systémami, tento kód bude fungovať úplne dobre. Nezáleží na tom, akú verziu verzie Microsoft Runtime Scripting máte.
Jedinou nevýhodou je, že neuvidíte komplexnosť poskytovanú VBA. Aby ste mohli používať všetky vlastnosti a metódy programu FileSystemObject, budete musieť závisieť od svojich znalostí.
2: Vytvorenie objektu FSO pridaním odkazu na skriptovanie za behu Microsoft
Pomocou nového kľúčového slova môžete priamo vytvoriť súbor FileSystemObject vo VBA. Na to budete musieť pridať odkaz na najnovší Microsoft Scripting Runtime vo vašom systéme.
Ak chcete pridať referenciu, prejdite na možnosť referencie v ponuke nástrojov. Tu nájdete dll programu Microsoft Scripting Runtime. Skontrolujte to a kliknite na tlačidlo OK.
Teraz ste pripravení vytvoriť a používať objekt FSO.
Sub LearnFso () Dim fso ako nový FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") End Sub
Alebo
Sub LearnFso () Dim fso as FileSystemObject Set fso = New FileSystemObject Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR") End Sub
Oba budú fungovať dobre.
Hlavnou výhodou tejto metódy je, že uvidíte inteligenciu VBA. VBA vám ukáže všetky vlastnosti a metódy objektu fso. Tiež povie, aké premenné bude akceptovať a akú hodnotu vráti.
Ak zdieľate tento kód s inými systémami, budete im musieť povedať, aby pridali odkaz na Scripting Runtime z nástrojov, inak získajú chybu pri kompilácii, ktorá nie je definovaná používateľom. Je to ako import iných programovacích jazykov.
Upozorňujeme, že FSO nie je kľúčové slovo. Môžete ho použiť ako názov premennej. Je len zvykom pomenovať súborový systémový objekt ako fso. Preto si niektorí ľudia mýlia, že je to kľúčové slovo.
Oba spôsoby vytvárania objektov FSO majú svoje výhody a nevýhody, ktoré som uviedol pri ich vysvetľovaní. Používajte teda podľa svojich potrieb. V tomto článku použijem druhú metódu vytvárania FileSystemObject.
Teraz, keď vieme, ako vytvoriť FileSystemObject vo VBA, využime tieto znalosti pri vykonávaní niektorých zmysluplných úloh. Myslím tým, skočme na príklady.
Príklad 1: Získať všetku podpriečinok v určenom priečinku
Prvým príkladom, ktorý uvidíme, je získanie názvov podpriečinkov z konkrétneho priečinka.
Sub LearnFso () „rozkladajúce sa premenné, ktoré budeme potrebovať priečinok 'Inicializácia objektov fdrpath = "D: \ Downloads"' Deklarovanie priečinka Set fso = New FileSystemObject 'Vytvorenie objektu fso Sada fdr = fso.GetFolder (fdrpath)' Vytvorenie objektu priečinka daného priečinka 'slučka na získanie všetkých podpriečinky názov pre Pre každú podfond V fdr.SubFolders Debug.Print subfdr.Name Next subfdr End Sub
Keď spustíte vyššie uvedený kód, získate to.
Áno! To je môj priečinok na stiahnutie. Nesústreď sa na to.
Ako to fungovalo?
Poďme pochopiť v krokoch:
1: Rozpadajúce sa premenné, ktoré budeme potrebovať
Dim fso As FileSystemObject 'premenná pre FileSystemObject
Dim fdr As Folder 'Premenná pre základný priečinok
Dim subfdr As Folder 'Premenná pre podpriečinky
Najprv sme deklarovali všetky premenné, ktoré budeme v tomto príklade potrebovať. Prvá premenná je samozrejme fso ako objekt súborového systému. Dve premenné fdr a subfdr sú typu priečinka. Objekt fso použijeme na vytvorenie objektu typu súboru namiesto priameho vytvárania. The fdrpath je premenná use slúži na uchovanie cesty k základnému priečinku, z ktorého chceme získať všetky podpriečinky.
2: Inicializácia objektov
fdrpath = "D: \ Stiahnuté súbory" 'Vyhlásenie priečinka
Set fso = New FileSystemObject 'Vytvorenie objektu fso
Set fdr = fso.GetFolder (fdrpath) 'Vytvorenie objektu priečinka daného priečinka
V tomto kroku sme inicializovali všetky objekty, ktoré sme deklarovali okrem subfdr. Všimnite si toho, že sme inicializovali premennú súboru fdr pomocou metódy getFolder objektov fso.
Metóda GetFolder () programu FileSystemObject prevezme cestu k priečinku alebo adresáru ako reťazec a vráti objekt typu súboru.
3: slučka na získanie názvu všetkých podpriečinkov v objekte priečinka
Pre každý podadresár v priečinkoch fdr. Podpriečinky
Debug.Print subfdr.Name
Nasledujúca subfdr
Tu sme použili a pre každú slučku na prechod cez každú podpriečinok v objekte súboru fdr. Na zacyklenie sme použili vlastnosť Podpriečinky objektu súboru.
Na získanie názvov jednotlivých podpriečinkov používame vlastnosť name. A je hotovo.
Príklad 2: Získať všetky cesty k súborom v priečinku a jeho podpriečinkoch
Aby sme získali všetky cesty alebo plne kvalifikované názvy všetkých súborov v priečinku a jeho podpriečinku, musíme do kódu príkladu 1 pridať niekoľko ďalších riadkov.
Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Premenná pre základný priečinok Dim subfdr As Folder' Premenná pre podpriečinky Dim fdrpath As String 'pre uloženie cesty základného priečinka Dim fl As As' pre uloženie objektu súboru fdrpath = "D: \ downloads" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) 'loop to get all the sub folders name in For Every subfdr In fdr.SubFolders For Every fl In subfdr.Files' to loop though each file Debug.Print fl.Path 'získanie názvu súboru Next fl Next subfdr' pre získanie súborov z hlavného priečinka Pre každý fl In fdr.Files Debug.Print fl.Path Next fl End Sub
Metóda Folder.Files () je metóda, ktorá vracia súbory v podpriečinku. Metóda File.Path () vracia úplnú adresu súboru.
Každý z nás má vnútornú slučku na iteráciu všetkých súborov v podpriečinku hlavného priečinka a jeho priečinka.
Na získanie súborov z hlavného priečinka používame inú slučku.
Príklad 3: Uložte názvy súborov do súboru CSV.
V predchádzajúcom príklade sme sa naučili, ako vytlačiť cesty k súborom konkrétnych priečinkov v bezprostrednom okne. V tomto prípade sa naučíme, ako uložiť tieto cesty do súboru CSV. Na to stačí do kódu pridať niekoľko riadkov. Pozrite si nižšie uvedené riadky s výrazným kódom.
Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Premenná pre základný priečinok Dim subfdr As Folder' Premenná pre podpriečinky Dim fdrpath As String 'pre uloženie cesty základného priečinka Dim fl As File' pre uloženie objektu súboru Dim fileList As TextStream 'A textstream object 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) 'slučka na získanie názvu všetkých podpriečinkov v časti Pre každý podfond V priečinku fdr. Podpriečinky pre každý súbor fl V podadresároch.súbory' na opakovanie každého súboru fileList.Write fl.Path & "," Next fl Next subfdr 'a získate súbory hlavného priečinka Pre každý fl In fdr.Files fileList.Write fl.Path & "," Next fl fileList.Close End Sub
Tu sme deklarovali nový objekt typu FileStream s názvom fileList
Inicializovali sme premennú zoznamu súborov objektom filestream pomocou nižšie uvedeného riadku.
Nastaviť fileList = fso.CreateTextFile (fdrpath & "\ File List in This Folder.csv", True, False)
Na vytvorenie objektu FileStream používame metódu CreateTextFile z FSO. Vytvára textový súbor. Táto metóda akceptuje názov súboru s úplnou cestou. Prvá premenná to robí. Na vytvorenie súboru CSV používame príponu .csv. Druhá premenná slúži na umožnenie prepisovania. Tretí argument je nepravdivý, aby sa vyhlásilo, že nejde o binárny súbor.
V slučkách nahradíme metódu debug.print metódou filelist.Write, aby sme zapísali každú cestu k súboru do vytvoreného súboru.
Takže áno, chlapci, takto môžete používať FileSystemObject. FSO je možné využiť na mnoho ďalších vecí, o ktorých budeme diskutovať v nasledujúcich článkoch. Ak máte akékoľvek pochybnosti o tomto článku o dopyte súvisiacom s FSO, opýtajte sa ma v sekcii komentárov nižšie.
Začíname s UserForms programu Excel VBA| Vysvetlím, ako vytvoriť formulár v programe Excel, ako používať panel nástrojov VBA, ako zaobchádzať s užívateľskými vstupmi a nakoniec, ako ich uložiť. Tieto témy si prejdeme na jednom príklade a sprievodcovi krok za krokom.
Premenné VBA v Exceli| VBA je skratka pre Visual Basic for Applications. Je to programovací jazyk od spoločnosti Microsoft. Používa sa s aplikáciami balíka Microsoft Office, ako sú MSExcel, MS-Word a MS-Access, zatiaľ čo premenné VBA sú špecifické kľúčové slová.
Variabilný rozsah Excel VBA| Vo všetkých programovacích jazykoch máme špecifikátory prístupu k premenným, ktoré definujú, odkiaľ je k definovanej premennej prístup. Excel VBA nie je výnimkou. VBA má tiež špecifikátory rozsahu.
Argumenty ByRef a ByVal | Keď je argument odoslaný ako argument ByRef do iného podradeného prvku alebo funkcie, odošle sa odkaz na skutočnú premennú. Všetky zmeny vykonané v kópii premennej sa prejavia v pôvodnom argumente.
Odstráňte hárky bez výziev na potvrdenie pomocou VBA v programe Microsoft Excel | Keďže odstraňujete hárky pomocou jazyka VBA, viete, čo robíte. Chcete Excelu povedať, aby toto upozornenie nezobrazoval a vymazal ten prekliaty hárok.
Pridajte a uložte nový zošit pomocou jazyka VBA v programe Microsoft Excel 2016| V tomto kóde sme najskôr vytvorili odkaz na objekt zošita. A potom sme to inicializovali novým objektom zošita. Výhodou tohto prístupu je, že môžete ľahko vykonávať operácie s týmto novým zošitom. Rovnako ako ukladanie, zatváranie, mazanie atď
Zobrazte správu na stavovom riadku programu Excel VBA| Stavový riadok v Exceli je možné použiť ako monitor kódu. Keď je váš kód VBA dlhý a vykonávate niekoľko úloh pomocou jazyka VBA, často vypnete aktualizáciu obrazovky, aby ste videli, že obrazovka bliká.
Vypnite varovné správy pomocou VBA v programe Microsoft Excel 2016| Tento kód nielenže deaktivuje upozornenia VBA, ale tiež zvyšuje časovú účinnosť kódu. Pozrime sa ako.
Populárne články:
50 skratiek programu Excel na zvýšenie produktivity | Vykonajte svoju úlohu rýchlejšie. Týchto 50 skratiek vám umožní pracovať ešte rýchlejšie v Exceli.
Funkcia VLOOKUP v programe Excel | Toto je jedna z najpoužívanejších a najobľúbenejších funkcií programu Excel, ktorá sa používa na vyhľadávanie hodnôt z rôznych rozsahov a hárkov.
COUNTIF v Exceli 2016 | Počítajte hodnoty s podmienkami pomocou tejto úžasnej funkcie. Na počítanie konkrétnych hodnôt nie je potrebné filtrovať údaje. Funkcia Countif je potrebná na prípravu palubnej dosky.
Ako používať funkciu SUMIF v programe Excel | Toto je ďalšia zásadná funkcia palubnej dosky. To vám pomôže zhrnúť hodnoty za konkrétnych podmienok.