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.
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:
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:
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:
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 |
Pro funkci je potrřeba VBA nastavení, neboli zprovoznit Microsoft Scripting Runtime ve VBA.
Ve VBA menu Tools > References...
V dialogovém okně vybrat Microsoft Scripting Runtime
Základní ukázka
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
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
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
Další informace, které se popjí při práci se soubory a složkami:
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 na tvorbu složek a souborů:
Dim MyFSO As FileSystemObject
Set MyFSO = New FileSystemObject
MyFSO.CreateFolder ("D:\smaz\blalba")
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
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 ;)
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 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.
Dim MyFSO As FileSystemObject
Set MyFSO = New FileSystemObject
MyFSO.DeleteFolder ("D:\smaz\blabla")
Set MyFSO = Nothing
Dim MyFSO As FileSystemObject
Set MyFSO = New FileSystemObject
MyFSO.DeleteFile ("D:\smaz\test.pdf")
Set MyFSO = Nothing
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.
V přípravě
Související články:
Soubor FileSystemObject Excel VBA ke stažení zdarma. Soubor využívá makra (nutno mít VBA patřičně nastaveno, jak je uvedeno v článku).
Napadá vás, jak článek vylepšit a doplnit? Můžete uvést v komentáři.
Článek byl aktualizován: 19.09.2020 11:07
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.
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ů.
Můžete být prvními co zanechají smysluplný komentář.
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
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 - 2024 |