Co je FileSystemObject (FSO) a jak jej používat ve VBA Excel?

Obsah:

Anonim

Objekt FileSystemObject slouží k práci se složkami a soubory připojenými k systému. Můžeme jej použít k přístupu k souborům, složkám, jednotce a textovým proudům. Může nejen přistupovat k souborům, složkám a textovým souborům, ale také může vytvářet. Tyto operace nejsou omezeny na pevný disk systému, ale na jakékoli zařízení připojené k souboru. To znamená, že můžete přistupovat k jednotkám pera, diskům CD nebo virtuálně připojeným síťovým jednotkám.

Toto jsou operace, které můžeme provádět pomocí FileSystemObject ve VBA:

Pro vytváření, otevírání, čtení, psaní a mazání textových souborů.

Pro přidávání, úpravy a mazání složek.

K opakování souborů a složek.

Pro kopírování a přesouvání souborů nebo složek na jiná místa.

Pro kontrolu, zda soubor nebo složka v umístění existuje nebo ne

Jak přistupovat k FileSystemObject ve VBA?

Objekt systému souborů je součástí Microsoft Scripting Runtime Library. Pro přístup k FileSystemObject potřebujeme připojit nebo přidat odkaz na Microsoft Scripting Runtime Library nebo Scrrun.dll.

Poznámka: FileSystemObject nepodporuje provoz binárních souborů, protože Scrrun.dll podporuje vytváření a manipulaci se soubory pomocí objektu TextStream.

Existují dva způsoby vytváření FileSystemObject ve VBA:

1: Vytvoření objektu FSO pomocí metody CreateObject:

Pomocí této metody nejprve deklarujeme typ proměnného objektu. Potom nastavte odkaz objektu FSO na tuto proměnnou pomocí CreateObject:

Sub LearnFso () 'Vytvoření proměnné objektu Dim fso jako objekt' Vytvořte FileSystemObject pomocí metody Create Object Set fso = CreateObject ("Scripting.FileSystemObject") Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR" ) End Sub 

Tato metoda je dynamická a přenosná. To znamená, že pokud kód sdílíte s jinými systémy, bude tento kód fungovat naprosto v pořádku. Nezáleží na tom, jakou verzi verze Microsoft Runtime Scripting máte.

Jedinou nevýhodou je, že nebudete moci vidět inteligence poskytovaná VBA. Budete muset záviset na svých znalostech, abyste mohli používat všechny vlastnosti a metody FileSystemObject.

2: Vytvoření objektu FSO přidáním odkazu na skriptování Microsoft Runtime

Pomocí nového klíčového slova můžete přímo vytvořit soubor FileSystemObject ve VBA. K tomu budete muset přidat odkaz na nejnovější Microsoft Scripting Runtime ve vašem systému.

Chcete -li přidat odkaz, přejděte na možnost reference v nabídce nástrojů. Zde vyhledejte dll knihovny Microsoft Scripting Runtime. Zkontrolujte to a klikněte na OK.

Nyní jste připraveni vytvořit a používat objekt FSO.

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

Nebo

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

Oba budou fungovat dobře.

Hlavní výhodou této metody je, že budete moci vidět inteligenci VBA. VBA vám ukáže všechny vlastnosti a metody objektu fso. Také řekne, jaký druh proměnných bude přijímat a jakou hodnotu vrátí.

Pokud tento kód sdílíte s jinými systémy, budete jim muset říct, aby přidali odkaz na Scripting Runtime z nástrojů, jinak dostanou chybu kompilace, která není definována uživatelem definovaným typem. Je to jako import jiných programovacích jazyků.

Všimněte si, že FSO není klíčové slovo. Můžete jej použít jako název proměnné. Je to jen konvence pojmenovat souborový systémový objekt jako fso. Proto si někteří lidé pletou klíčové slovo.

Oba způsoby vytváření objektů FSO mají své výhody a nevýhody, které jsem zmínil při jejich vysvětlování. Používejte tedy podle své potřeby. V tomto článku použiji druhý způsob vytváření FileSystemObject.

Nyní, když víme, jak vytvořit FileSystemObject ve VBA, použijme tyto znalosti při provádění smysluplných úkolů. Přejdeme k příkladům.

Příklad 1: Získejte veškerou podsložku ve specifikované složce

První příklad, který uvidíme, je získání názvů podsložek z konkrétní složky.

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 složka 'Inicializace objektů fdrpath = "D: \ Downloads"' Deklarace složky Set fso = New FileSystemObject 'Vytvoření objektu fso Set fdr = fso.GetFolder (fdrpath)' Vytvoření objektu složky dané složky 'smyčka pro získání všech název podsložky v Pro každou podfond V fdr.SubFolders Debug.Print subfdr.Name Další subfdr Konec Sub 

Když spustíte výše uvedený kód, získáte to.

To jo! To je moje složka pro stahování. Nesoustředit se na to.

Jak to fungovalo?

Pojďme si rozumět v krocích:

1: Rozpadající se proměnné, které budeme potřebovat

Dim fso As FileSystemObject 'Proměnná pro FileSystemObject

Dim fdr As Folder 'Proměnná pro základní složku

Dim subfdr As Folder 'Proměnná pro podsložky

Nejprve jsme deklarovali všechny proměnné, které budeme v tomto příkladu potřebovat. První proměnná je samozřejmě fso jako objekt souborového systému. Dvě proměnné fdr a subfdr jsou typu složky. Objekt fso použijeme k vytvoření objektu typu souboru namísto přímého vytváření. The fdrpath is use variable slouží k uchování cesty k základní složce, ze které chceme získat všechny podsložky.

2: Inicializace objektů

fdrpath = "D: \ Soubory ke stažení" "Deklarování složky."

Set fso = New FileSystemObject 'Vytvoření objektu fso

Set fdr = fso.GetFolder (fdrpath) 'Vytvoření objektu složky dané složky

V tomto kroku jsme inicializovali všechny objekty, které jsme deklarovali kromě subfdr. Všimněte si toho, že jsme inicializovali proměnnou souboru fdr pomocí metody getFolder objektů fso.

Metoda GetFolder () FileSystemObject převezme cestu složky nebo adresáře jako řetězec a vrátí objekt typu souboru.

3: smyčka pro získání názvu všech podsložek v objektu složky

Pro každý dílčí soubor ve složkách podadresářů

Debug.Print subfdr.Name

Další subfdr

Zde jsme pro každou smyčku použili smyčku pro procházení každou podsložkou v objektu souboru fdr. Ke smyčce jsme použili vlastnost Podsložky objektu souboru.

Vlastnost name používáme k získání názvů každé podsložky. A je hotovo.

Příklad 2: Získejte všechny cesty k souborům do složky a jejích podsložek

Abychom získali všechny cesty nebo plně kvalifikované názvy všech souborů ve složce a její podsložce, musíme do kódu příkladu 1 přidat několik dalších řádků.

Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Proměnná pro základní složku Dim subfdr As Folder' Proměnná pro podsložky Dim fdrpath As String 'pro uložení cesty základní složky Dim fl As File' pro uložení objektu souboru 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 throw each file Debug.Print fl.Path 'získání názvu souboru Next fl Další subfdr' pro získání souborů hlavní složky Pro každý fl In fdr.Files Debug.Print fl.Path Další fl End Sub 

Metoda Folder.Files () je metoda, která vrací soubory v podsložce. Metoda File.Path () vrací úplnou adresu souboru.

Každý z nás má vnitřní smyčku pro iteraci všech souborů v podsložce hlavní složky a její složky.

K získání souborů z hlavní složky používáme další smyčku.

Příklad 3: Uložte názvy souborů do souboru CSV.

V předchozím příkladu jsme se naučili tisknout cesty k souborům konkrétních složek v bezprostředním okně. V tomto příkladu se naučíme, jak tyto cesty uložit do souboru CSV. K tomu stačí do kódu přidat několik řádků. Podívejte se na níže uvedené řádky kódu.

Sub LearnFso () Dim fso As FileSystemObject Dim fdr As Folder 'Proměnná pro základní složku Dim subfdr As Folder' Proměnná pro podsložky Dim fdrpath As String 'pro uložení cesty základní složky Dim fl As File' pro uložení objektu souboru 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) 'smyčka pro získání názvu všech podsložek v Pro každý podfond V fdr.SubFolders Pro každý fl In subfdr.Files' pro procházení každého souboru fileList.Write fl.Path & "," Next fl Next subfdr 'pro získání soubory hlavní složky Pro každý fl In fdr.Files fileList.Write fl.Path & "," Next fl fileList.Close End Sub 

Zde jsme deklarovali nový objekt typu FileStream s názvem seznam souborů

Inicializovali jsme proměnnou seznamu souborů objektem filestream pomocí níže uvedeného řádku.

Nastavit fileList = fso.CreateTextFile (fdrpath & "\ File List in This Folder.csv", True, False)

K vytvoření objektu FileStream používáme metodu CreateTextFile z FSO. Vytvoří textový soubor. Tato metoda přijímá název souboru s úplnou cestou. První proměnná to dělá. K vytvoření souboru CSV používáme příponu .csv. Druhá proměnná slouží k povolení přepsání. Třetí argument je False, který deklaruje, že se nejedná o binární soubor.

Ve smyčkách nahradíme metodu debug.print metodou filelist.Write pro zápis každé cesty k souboru do vytvořeného souboru.

Takže ano, lidi, takto můžete použít FileSystemObject. FSO lze použít k mnoha dalším věcem, o kterých budeme diskutovat v následujících článcích. Pokud máte jakékoli pochybnosti o tomto článku dotazu souvisejícího s FSO, zeptejte se mě v sekci komentáře níže.

Začínáme s UserForms aplikace Excel VBA| Vysvětlím, jak vytvořit formulář v Excelu, jak používat sadu nástrojů VBA, jak zacházet s uživatelskými vstupy a nakonec jak ukládat uživatelské vstupy. Tato témata si projdeme pomocí jednoho příkladu a průvodce krok za krokem.

Proměnné VBA v Excelu| VBA znamená Visual Basic for Applications. Jedná se o programovací jazyk od společnosti Microsoft. Používá se s aplikacemi Microsoft Office, jako jsou MSExcel, MS-Word a MS-Access, zatímco proměnné VBA jsou specifická klíčová slova.

Proměnný rozsah Excel VBA| Ve všech programovacích jazycích máme specifikátory přístupu k proměnným, které definují, odkud lze k definované proměnné přistupovat. Excel VBA není výjimkou. VBA má také specifikátory rozsahu.

Argumenty ByRef a ByVal | Když je argument předán jako ByRef argument jinému sub nebo funkci, je odeslán odkaz na skutečnou proměnnou. Jakékoli změny provedené v kopii proměnné se projeví v původním argumentu.

Odstraňte listy bez výzev k potvrzení pomocí VBA v aplikaci Microsoft Excel | Protože odstraňujete listy pomocí VBA, víte, co děláte. Chtěli byste říct Excelu, aby toto varování nezobrazoval a ten zatracený list smazal.

Přidat a uložit nový sešit pomocí jazyka VBA v aplikaci Microsoft Excel 2016| V tomto kódu jsme nejprve vytvořili odkaz na objekt sešitu. A pak jsme to inicializovali novým objektem sešitu. Výhodou tohoto přístupu je, že na tomto novém sešitu můžete snadno provádět operace. Stejně jako ukládání, zavírání, mazání atd

Zobrazit zprávu na stavovém řádku aplikace Excel VBA| Stavový řádek v Excelu lze použít jako monitor kódu. Když je váš kód VBA dlouhý a provádíte několik úkolů pomocí VBA, často deaktivujete aktualizaci obrazovky, abyste neviděli, že tato obrazovka bliká.

Vypněte varovné zprávy pomocí VBA v aplikaci Microsoft Excel 2016| Tento kód nejenže zakáže výstrahy VBA, ale také zvyšuje časovou účinnost kódu. Uvidíme jak.

Oblíbené články:

50 zkratek aplikace Excel pro zvýšení produktivity | Získejte rychleji svůj úkol. Těchto 50 klávesových zkratek vám umožní pracovat v Excelu ještě rychleji.

Funkce VLOOKUP v Excelu | Toto je jedna z nejpoužívanějších a nejoblíbenějších funkcí Excelu, která slouží k vyhledávání hodnot z různých rozsahů a listů.

COUNTIF v aplikaci Excel 2016 | Pomocí této úžasné funkce spočítejte hodnoty s podmínkami. K počítání konkrétních hodnot nemusíte data filtrovat. Funkce Countif je nezbytná pro přípravu řídicího panelu.

Jak používat funkci SUMIF v aplikaci Excel | Toto je další základní funkce řídicího panelu. To vám pomůže shrnout hodnoty za konkrétních podmínek.