Přeskočit navigaci | Přeskočit na novinky
     

Jste zde: Úvodní stránka » excel » vba-soubory » FileSystemObject-VBA-Excel
Microsoft Excel logo

FileSystemObject s využitím VBA Excel

Videokurzy Excel

Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:

Jak na FileSystemObject ve VBA Excel.Od Teorie, přes praktické ukázky až po tipy a triky, aneb jak na disky, složky (adresáře) soubory "jiným" způsobem.

Úvodem

Při práci v Excel někdy potřebujete pracovat s diskem, adresáři, složkami (například při ukládání souboru). Jak na to využitím FileSystemObject se dozvíte v tomto článku. Pro přehlednost (a možnost článek rozšiřovat) je článek rozdělen na jednotlivé kapitoly:


Trocha teorie

V Excel lze při práci se diskem, soubory, složkami (adresáři) využít FileSystemObject (za předpokladu, že je "zapnut" Microsoft Scripting Runtime - jak zrovoznit je v další kapitole). Než se vrhnete do zprovoznění tak k čemu může sloužit:

  • Kontrola existence souboru
  • Vytváření, úprava a mazání složek.
  • Otvírání, čtení, vytváření a mazání textových souborů.
  • Kopírování a přesouvání souborů nebo složek.

Objekty

Objekty které v FileSystemObject obsahuje:

Objekt Popis objektu
Disk pro získání informace o diskové jednotce (prostor, který je k dispozici, její logický název, atd.) Tip může jít i o FlashDisk, CD-ROM, nebo disk připojení přes LAN…
Složka umožňuje vytvářet, přesouvat, mazat v adresářích (složkách)
Soubor umožňuje vytvořit, přesunout, smazat soubor.
TextStream umožňuje číst nebo zapisovat do textových souborů

Pro lepší ukázku obrázek:

FSO FileSystemObject Microsoft ukázka v Excel VBA

Metody

Metody pro práci s jednotlivými objekty

Metoda Popis
GetDrive Tyto metody se používají pro načítání informací o jednotkách, složkách a souborech.
DriveExists Kontrola zda disk existuje
GetDriveName Vrací jméno disku
GetFolder Tyto metody se používají pro načítání informací o jednotkách, složkách a souborech.
CopyFolder Tyto metody pomáhají při kopírování složek z jednoho umístění do druhého.
CreateFolder Pomáhá při vytváření nových složek.
DeleteFolder Odstraňování složek (adresářů)
FolderExists Existuje složka
MoveFolder Tyto metody pomáhají při přesunu souborů nebo složek z jednoho umístění do druhého.
GetParentFolderName  
GetSpecialFolder  
GetFile Tyto metody se používají pro načítání informací o jednotkách, složkách a souborech.
CreateTextFile Pomáhá při vytváření nových souborů.
DeleteFile Pomáhá při odstraňování ukončených souborů nebo složek.
CopyFile Tyto metody pomáhají při kopírování souborů z jednoho umístění do druhého.
MoveFile Tyto metody pomáhají při přesunu souborů nebo složek z jednoho umístění do druhého.
DeleteFile Odstraňování souboru
FileExists Existuje soubor
GetExtensionName Vrátí příponu
GetFileName Vrátí jméno souboru
GetFileVersion Vrátí verzi souboru
CreateTextFile Vytvoří textový soubor
GetStandardStream  
OpenTextFile Otevřít souboru jako TextStream
BuildPath  
GetAbsolutePathName  
GetBaseName  
GetTempName  

Zrovoznění

Pro funkci je potrřeba VBA nastavení, neboli zprovoznit Microsoft Scripting Runtime ve VBA.

Ve VBA menu Tools > References...

  FSO FileSystemObject Microsoft - References

V dialogovém okně vybrat Microsoft Scripting Runtime

FSO FileSystemObject Microsoft Scripting Runtime

Základní práce

Základní ukázka

  • Existuje složka
  • Existuje soubor
  • Výpis souboru ve složce
  • ...

Existuje složka (adresář)

Dim MyFSO As FileSystemObject Set MyFSO = New FileSystemObject If MyFSO.FolderExists("D:\smaz") Then MsgBox ("Složka existuje.") Else MsgBox ("Složka neexistuje.") End If

Existuje soubor

Dim MyFSO As FileSystemObject Set MyFSO = New FileSystemObject If MyFSO.FileExists("D: \smaz\test.pdf") Then MsgBox ("Soubor existuje.") Else MsgBox ("Soubor neexistuje.") End If

Výpis souboru v adresáři

Dim MyFSO As FileSystemObject Dim MyFile As File Dim MyFolder As Folder Set MyFSO = New Scripting.FileSystemObject Set MyFolder = MyFSO.GetFolder("D:\smaz") For Each MyFile In MyFolder.Files Debug.Print MyFile.Name Next MyFile ' Lze vypsat i jinak než před Debug.Print

Jak zjistit další informace

Další informace, které se popjí při práci se soubory a složkami:

Volná velikost na disku

Set FSO = New Scripting.FileSystemObject Dim drv As Drive Dim Space As Double Set drv = FSO.GetDrive("D:") VolneMistoVelikost = drv.FreeSpace VolneMistoVelikost = VolneMistoVelikost / 1073741824 'na GB   VolneMistoVelikost = WorksheetFunction.Round(VolneMistoVelikost, 2) ' Zaokrouohlení MsgBox ("D: má volných = " & VolneMistoVelikost & " GB")

Jak vytvořit složku soubor

Jak na tvorbu složek a souborů:

Vytvořit složku

Dim MyFSO As FileSystemObject Set MyFSO = New FileSystemObject MyFSO.CreateFolder ("D:\smaz\blalba")

Ošetřit, pokud bude složka exisovat

Dim MyFSO As FileSystemObject Set MyFSO = New FileSystemObject If MyFSO.FolderExists("D:\smaz\blalba") Then MsgBox ("Složka existuje.") Else MyFSO.CreateFolder ("D:\smaz\blalba") End If

Vytvoř soubor prázdný soubor

Dim FSO As FileSystemObject Set FSO = New FileSystemObject Dim txtstr As TextStream Dim FileName As String ' soubor který bude vytvořen FileName = "D:\smaz\smaz_File_2.txt" ' Vytvořit soubor Set txtstr = FSO.CreateTextFile(FileName,  True,  True)

Tip opět je vhodné zkontrolovat před vytvořením zda existuje ;)

Vytvoř soubor a něco zapiš

Dim FSO As FileSystemObject Set FSO = New FileSystemObject Dim txtstr As TextStream Dim FileName As String Dim FileContent As String Dim File As File ' soubor který bude vytvořen FileName = "D:\smaz\smaz_File.txt" ' mužeme načíst z input box, form, buňky   FileContent = "Pokus JakNaExcel.cz" 'Vytvořit a doplnit ' Tip Kontrola existence Set txtstr = FSO.CreateTextFile(FileName,  True,  True) txtstr.Write FileContent txtstr.Close Set File = FSO.GetFile(FileName) Set txtstr = File.OpenAsTextStream(ForReading,  TristateUseDefault) MsgBox ("Vytvořeno: " & FileName & " a uloženo do souboru: " & txtstr.ReadAll) txtstr.Close ' Pokud budu chtít smazat při testech ' File.Delete (True)

Jak smazat soubor, složku (adresář)

Jak mazat soubory a složky? Tady pozor! Hlavně ať nedojde ke smazání některých systémových souborů, případně důležitých dat! C není D atd.

Mazání složky

Dim MyFSO As FileSystemObject Set MyFSO = New FileSystemObject MyFSO.DeleteFolder ("D:\smaz\blabla") Set MyFSO = Nothing

Mazání souboru

Dim MyFSO As FileSystemObject Set MyFSO = New FileSystemObject MyFSO.DeleteFile ("D:\smaz\test.pdf") Set MyFSO = Nothing

Kopie souboru / adresářů (složek)

Jak na kopií souborů.

Dim MyFSO As FileSystemObject Dim SourceFile As String Dim DestinationFolder As String Set MyFSO = New Scripting.FileSystemObject SourceFile = "D:\smaz\aaa\test.pdf" DestinationFolder = "D:\smaz\bbb" MyFSO.CopyFile Source:=SourceFile, Destination:=DestinationFolder & "\test.pdf"

V přípravě další ukázky.

Tipy a triky

V přípravě

Související články

Související články:


Microsoft Excel VBA - stahuj logo

Ke stažení

Soubor FileSystemObject Excel VBA soubor ve formátu *.xlsm ke stažení zdarma. Soubor využívá makra (nutno mít VBA patřičně nastaveno, jak je uvedeno v článku).


Závěrem

Napadá vás, jak článek vylepšit a doplnit? Můžete uvést v komentáři.

Článek byl aktualizován: 21.05.2019 10:28

Odměna

Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.


Pavel Lasák - autor webu

Pavel Lasák

Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.

   Pavel Lasák LinkedIn Profil    Pavel Lasák Google+ Profil    Pavel Lasák facebook Profil    Pavel Lasák twitter Profil


Komentáře zatím nejsou

Můžete být prvními co zanechají smysluplný komentář.






Excel


Sdílejte

Pomohl Vám návod?
Sdílejte na Facebooku, G+
LinkedIn...

Nové články


Reklama


TOPlist Licence Creative Commons webarchiv rss XML

Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2019 | 688

Tento web zatím neprošel jazykovou korekturou. Beta verze redakčního systému.