Práce se soubory & složkami
ChDir
Sekce “ChDir”Definice
Sekce “Definice”Funkce změní aktuální pracovní adresář.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Funkce se používá v případě, kdy je potřebné v kódu změnit adresář před otevřením nebo vytvořením souborů. Adresářem se myslí cesta k souborům nebo složkám v zařízení. Je důležité správně nakopírovat adresář v případě, kdy se do funkce vkládá skutečně jako zkopírovaný textový řetězec. Pokud adresář v zařízení neexistuje, vyhodnotí se funkce jako error. Funkce navíc nelze vložit do proměnné, pouze přenastaví daný adresář, do kterého následně např. lze ukládat soubory.
Vzorec
Sekce “Vzorec”ChDir(Path)Argumenty
Sekce “Argumenty”Path (povinné) – Povinný argument. Určuje cestu k novému adresáři, který musí být vložen jako textový řetězec.
Použití
Sekce “Použití”ChDir („C:\Users\r\Dokumenty“) – Nastavení adresáře na „C:\Users\r\Dokumenty„. Tento adresář však musí v zařízení existovat.
ChDir („..“) – 2 tečky v argumentu funkce znamenají, že bude posunut adresář o jednu složku „výše“. Tedy pokud byl nastaven minulý adresář jako „C:\Users\r\Dokumenty„, při použití 2 teček nyní novým adresářem bude „C:\Users\r “ bez složky „Dokumenty“, jelikož se posunul adresář o složku „výš“.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Pokud má být změněný adresář zobrazen např. pomocí funkce MsgBox, je možné použít funkci CurDir, kde se ukáže cesta k změněnému adresáři.
ChDir „C:\Users\r\Documents“
MsgBox „Pracovní adresář změněn na: “ & CurDir
Nastavení adresáře, kdy se budou pomocí funkce Dir zobrazovat názvy všech Word dokumentů ve složce pomocí cyklu While. Následně je do proměnné „fileName“ všechny soubory kromě již iterovaných souborů. Pokud se již cyklem projedou všechny Wordovské soubory, cyklus se zastaví.
ChDir „C:\Users\r\VBA“
Dim fileName As String
fileName = Dir(„*.docx“)
While fileName <> „“
MsgBox „Nalezen soubor: “ & fileName
fileName = Dir
Wend
ChDrive
Sekce “ChDrive”Definice
Sekce “Definice”Funkce změní aktuální diskovou jednotku.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Funkce bude fungovat pouze v případě, kdy se v zařízení nachází více než jedna disková jednotka. Obvykle se v zařízení nachází hlavně jednotka „C:\“. Pokud v zařízení jsou i další diskové jednotky, lze je změnit touto funkcí a následně se dostat do dalších adresářů. Funkce se nezadává do proměnné, jinak se vyhodnotí jako error.
Vzorec
Sekce “Vzorec”ChDrive(String)Argumenty
Sekce “Argumenty”String (povinný) – Určuje novou jednotku (např. „C“, „H“,).
Použití
Sekce “Použití”ChDrive „D“ – Nastavení disku „D“ jako změněného disku, s kterým může být dále pracováno.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Nastavení nového disku, který má být následně vypsán pomocí funkce MsgBox, kde bude zobrazen aktuální adresář pomocí funkce CurDir.
ChDrive „D“
MsgBox „Aktuální adresář na jednotce D: “ & CurDir
Nastavení nového disku, ke kterému je následně vložena další cesta na tomto novém disku pomocí funkce ChDir, přičemž nový disk nyní bude uložen jako aktuální adresář, který je zjištěný funkcí CurDir.
ChDrive „Z“
ChDir CurDir & „\dalsi\cesta\v\novem\disku“
CurDir
Sekce “CurDir”Definice
Sekce “Definice”Vrací aktuální pracovní adresář jako textový řetězec.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Do funkce není nutné zadávat žádný argument, pokud má být vracen aktuální adresář. Pokud má být zvolen aktuální adresář pro jiný než aktuální disk, je nutné vložit nepovinný argument daného disku. Je nutné, aby disk v zařízení skutečné existoval.
Vzorec
Sekce “Vzorec”CurDir([String])Argumenty
Sekce “Argumenty”String (volitelné) – Určuje jednotku, pro kterou má být získán aktuální adresář.
Použití
Sekce “Použití”result = CurDir() – Zjištění aktuálního adresáře bez změny disku.
result = CurDir(„C“) – Zjištění aktuálního adresáře v jiném disku.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Pokud má být aktuální změněný adresář zobrazen např. pomocí funkce MsgBox, je možné použít funkci ChDir pro změnu adresáře a následně bude změněný adresář vypsán.
ChDir „C:\Users\r\Documents“
MsgBox „Pracovní adresář změněn na: “ & CurDir
Dir
Sekce “Dir”Definice
Sekce “Definice”Vrací název souboru nebo složky odpovídající zadanému vzoru.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Funkce se používá zejména při iteraci (procházení cyklem) souborů ve složce, kdy se specifickými soubory má provést určitý další blok kódu.
Vzorec
Sekce “Vzorec”Dir([PathName], [Attributes])Argumenty
Sekce “Argumenty”PathName (volitelné) – Určuje cestu k souboru nebo složce.
Attributes (volitelné, výchozí=vbNormal) – Určuje typ souborů (např. pouze skryté soubory).
| VBA Konstanta | Hodnota | Popis |
|---|---|---|
| vbNormal | 0 | Normální (výchozí) |
| vbReadOnly | 1 | Pouze pro čtení |
| vbHidden | 2 | Skryté |
| vbSystem | 4 | Systémové soubory |
| vbVolume | 8 | Volume label |
| vbDirectory | 16 | Adresář nebo složka |
| vbAlias | 64 | Název souboru je aliasem |
Do argumentu lze vložit i tzv. zástupné znaky, díky kterým lze např. zvolit pouze soubory s určitou příponou nebo názvem:
| Zástupný znak | Popis |
|---|---|
| * | Cokoliv před nebo za daným textem (včetně ničeho). Pokud stojí samostatně, jedná se o všechny soubory/složky v adresáři. |
| ? | Povoluje nalézt jakýkoliv jeden znak před nebo za řetězcem. |
Použití
Sekce “Použití”result = Dir(„C:\Users\r\VBA\Excel.xlsx“) – Specifikace přesného souboru.
result = Dir(„C:\Users\r\VBA\*.xlsx“) – Všechny xlsx soubory ve složce VBA, jelikož je před příponou zadaná hvězdička, tedy jakýkoliv text před danou příponou.
result = Dir(„C:\Users\r\VBAy\*.xls?“) – Musí se jednat o jakýkoliv název Excel souboru, který má ale příponu jako např. xlsx, xlsm a další, jelikož poslední znak musí být alespoň jeden znak díky zástupného znaku „?“.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Nastavení adresáře funkcí ChDir, kdy se budou pomocí funkce Dir zobrazovat názvy všech Excel souborů ve složce pomocí cyklu While. Následně je do proměnné „fileName“ všechny soubory kromě již iterovaných souborů. Pokud se již cyklem projedou všechny „xlsx“ soubory, cyklus se zastaví.
ChDir „C:\Users\r\VBA“
Dim fileName As String
fileName = Dir(„*.xlsx“)
While fileName <> „“
MsgBox „Nalezen soubor: “ & fileName
fileName = Dir
Wend
FileAttr
Sekce “FileAttr”Definice
Sekce “Definice”Vrací atributy souboru nebo režim přístupu k souboru.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Funkce nikdy nestojí samostatně, ale je nutné nejprve otevřít daný soubor, pro který mají být atributy vráceny.
Vzorec
Sekce “Vzorec”FileAttr(FileNumber, [ReturnType])Argumenty
Sekce “Argumenty”FileNumber (povinný) – Číslo souboru.
ReturnType (volitelný)- Typ informace pro vrácení, kde 1 vrací mód souboru (pro 32 bitový systém) a 2 vrací handler operačního systému souboru (pro 16 bitový systém).
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Specifikace cesty k souboru, kdy je následně soubor otevřen a zjištěno, o jaký soubor se jedná, následně jsou informace vypsány pomocí funkce MsgBox.
filePath = „C:\Users\r\Documents\Excel.xlsm“
Open filePath For Input As 1 ‚ Nastavení souboru jako prvního souboru
iOutput = FileAttr(1, 1) ‚ Atributy, jedná se o první otevřený soubor, tedy výstupem bude i 1
MsgBox („Informace o souboru: “ & iOutput) ‚ Msgbox funkce FileAttr
Close iFileNum ‚ Zavření souboru
FileCopy
Sekce “FileCopy”Definice
Sekce “Definice”Zkopíruje soubor z jednoho místa na jiné.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Soubor bude z původní složky pouze zkopírovaný do jiné, nikoliv vyjmutý. Tedy soubor se bude nacházet jak ve staré složce, tak i v nové složce. Je možné nastavit i jiný název souboru. Pro kopírování je nutné zadat i příponu souboru.
Vzorec
Sekce “Vzorec”FileCopy(Source, Destination)Argumenty
Sekce “Argumenty”Source (povinný) – Cesta k původnímu souboru nastavena jako textový řetězec.
Destination (povinný) – Cílová cesta nastavená jako textový řetězec.
Použití
Sekce “Použití”FileCopy „C:\Users\r\Doc\Zkouska.xlsx“, „C:\Users\r\Doc\Office\Zkouska.xlsx“ – Zkopírování souboru „Zkouska“ ze složky „Documents“ a vložení do složky „Office“ se stejným názvem. Cesty je nutné nahradit vlastními cestami k existujícímu souboru.
FileCopy „C:\Users\r\Doc\Zkouska.xlsx“, „C:\Users\r\Doc\Office\Novy.xlsx“ – Zkopírování souboru „Zkouska“ ze složky „Documents“ a vložení do složky „Office“ s novým názvem „Novy“. Cesty je nutné nahradit vlastními cestami k existujícímu souboru.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Kopírování všech .txt souborů pomocí cyklu while ve složce specifikované funkcí Dir ze složky „Doc“ do složky „Office“.
fileName = Dir(„C:\ Users\r\Doc\*.txt“)
While fileName <> „“
FileCopy “ C:\ Users\r\Doc\“ & fileName, “ C:\ Users\r\Doc\Office\“ & fileName
fileName = Dir
Wend
FileDateTime
Sekce “FileDateTime”Definice
Sekce “Definice”Vrací datum a čas poslední změny souboru.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Je nutné zadat celou cestu i příponu souboru, pro který má být získáno poslední datum změny, popř. cyklem projít jednotlivé soubory ve složce pro soubory, ke kterým má být datum změny získáno.
Vzorec
Sekce “Vzorec”FileDateTime(String)Argumenty
Sekce “Argumenty”String (povinný) – Cesta k souboru i s příponou a názvem soubory zadaným v textovém řetězci.
Použití
Sekce “Použití”FileDateTime(„C:\Example.txt“) – Zadaná cesta k textovému souboru „Example.txt“ na disku „C“.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Nejprve je zjištěna zdrojová složka a následně pomocí funkce Dir všechny soubory v adresáři. Pomocí cyklu je procházen každý soubor v adresáři a pokud je splněna podmínka, že datum změny je nižší než dnešní den zjištěný funkcí Date, má se soubor zkopírovat do jiné složky pomocí funkce FileCopy.
SourcePath = „C:\Zdrojova\Cesta\“ ‚ Získání zdrojové složky
pathToFiles = Dir(„C:\Zdrojova\Cesta\*“) ‚ Získání všech souborů ve zdrojové cestě
While pathToFiles <> „“ ‚ Dělat dokud nebudou projděny všechny soubory
If FileDateTime(SourcePath & pathToFiles) < Date Then ‚ Pokud je datum změny nižší než dnešní den, má být podmínka splněna
FileCopy SourcePath & pathToFiles, „C:\destinationPath\“ & pathToFiles ‚ Kopírování souboru ze zdrojové cesty do cílové
End If
pathToFiles = Dir ‚ změna adresáře pro procházení dalšího souboru
Wend
FileLen
Sekce “FileLen”Definice
Sekce “Definice”Vrací velikost souboru v bajtech.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Je nutné zadat celou cestu k souboru, kde se soubor nachází a zároveň příponu specifikovaného souboru. Pokud soubor se ve specifikovaném adresáři nenachází, vrátí funkce error.
Vzorec
Sekce “Vzorec”FileLen(String)Argumenty
Sekce “Argumenty”String (povinný) – Cesta k souboru i s příponou a názvem soubory zadaným v textovém řetězci.
Použití
Sekce “Použití”FileLen(„C:\Cesta\Example.txt“) – Vrátí počet bajtů textového souboru „Example“.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Nejprve je zadaná pouze cesta do souborů do proměnné „onlyPath“, následně jsou vybrány všechny soubory z této složky pomocí funkce Dir. Tyto soubory se prochází cyklem while a pokud bude mít soubor menší velikost než 500 000 bajtů, bude zkopírován pomocí funkce FileCopy. Následně bude přenastaven adresář na další soubor.
onlyPath = „C:\Cesta\“
Filename = Dir(„C:\Cesta\*“)
While Filename <> „“
If FileLen(onlyPath & Filename) < 500000 Then
FileCopy onlyPath & fileName, “ C:\ Users\r\Doc\Office\“ & fileName
End If
fileName = Dir
Wend
GetAttr
Sekce “GetAttr”Definice
Sekce “Definice”Vrací atributy souboru nebo složky.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Je nutné zadat celou cestu k souboru, kde se soubor nachází a zároveň příponu specifikovaného souboru. Pokud soubor se ve specifikovaném adresáři nenachází, vrátí funkce error. Vrácenou hodnotou je číslo, které znázorňuje:
| Výstupní hodnota | Popis |
|---|---|
| 0 | Normální |
| 1 | Pouze pro čtení |
| 2 | Skrytý |
| 4 | Systémový soubor (Není podporované pro Macintosh). |
| 16 | Adresář nebo složka. |
| 32 | Soubor, který byl od poslední zálohy změněn. |
| 64 | Dodaný název souboru je aliasem. |
Vzorec
Sekce “Vzorec”GetAttr(String)Argumenty
Sekce “Argumenty”String (povinný) – Cesta k souboru i s příponou a názvem soubory zadaným v textovém řetězci.
Použití
Sekce “Použití”GetAttr(„C:\Cesta\Example.txt“) – Získání atributu z textového souboru „Example“.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Nastavení souboru na pouze pro čtení funkcí SetAttr a následně pomocí funkce MsgBox zobrazení daného nastaveného atributu.
SetAttr „C:\Cesta\Example.txt“, vbReadOnly
MsgBox „Nové atributy souboru: “ & GetAttr(„C:\Cesta\Example.txt“)
Kill
Sekce “Kill”Definice
Sekce “Definice”Smaže zadaný soubor.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Funkce daný soubor kompletně smaže ze zařízení, tedy pokud není zálohován, nelze se k němu již vrátit, jelikož není odstraněn do koše. Je nutné dávat pozor, jaký soubor má být smazán a s funkcí zacházet opatrně. Je nutné zadat celou cestu, název i příponu souboru, aby byl soubor smazán.
Vzorec
Sekce “Vzorec”Kill(String)Argumenty
Sekce “Argumenty”String (povinný) – Cesta k souboru i s příponou a názvem soubory zadaným v textovém řetězci.
Použití
Sekce “Použití”Kill(„C:\Example.txt“) – Zadaná cesta k textovému souboru „Example.txt“ na disku „C“.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Smazání všech textových souborů ve složce „zdroj“, kde všechny soubory jsou zjištěny pomocí funkce Dir.
fileName = Dir(„C:\Zdroj\*.txt“)
While fileName <> „“
Kill „C:\“ & fileName
fileName = Dir
Wend
MkDir
Sekce “MkDir”Definice
Sekce “Definice”Vytvoří nový adresář v zadané cestě.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Nový adresář může být vytvořen kdekoliv v daném zařízení, je nutné vyspecifikovat celkovou cestu, kde má být adresář vytvořen a také jeho název za cestou složky. Pokud navíc již složka v cestě existuje, VBA vyhodí error. Nemůže se tedy stát, že by se již existující složka se stejným názvem přepsala.
Vzorec
Sekce “Vzorec”MkDir(String)Argumenty
Sekce “Argumenty”String (povinný) – Cesta k novému adresáři.
Použití
Sekce “Použití”MkDir „C:\Cesta\k\nove\složce\NovaSložka\“ – Tvorba nové složky „NovaSložka“ ve specifikované cestě, jelikož se jedná o poslední složku v cestě, takže ta má být vytvořena.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Nastavení složky, která má být vytvořena. Podmínkou je zjištěno, zdali již složka v cestě neexistuje, aby se vyhnulo erroru. Zjištění probíhá pomocí délky funkcí Len a zjištění adresáře funkcí Dir. Pokud složka neexistuje, je vytvořena.
newFolder = „C:\Cesta\k\nove\slozce\NovaSlozka\“
If Len(Dir(newFolder, vbDirectory)) = 0 Then
MkDir newFolder
End If
Name
Sekce “Name”Definice
Sekce “Definice”Přejmenuje soubor nebo složku.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Je nutné zadat celou cestu k souboru, kde se soubor nachází a zároveň příponu specifikovaného souboru. Při nového názvu souboru nebo složky je také nutné zadat celou cestu k novému názvu souboru. Pokud se soubor nebo složka ve zdrojovém adresáři nenachází, vrátí funkce error.
Vzorec
Sekce “Vzorec”Name(OldPath As String, NewPath As String)Argumenty
Sekce “Argumenty”OldPath (povinné) – Původní cesta ke složce nebo souboru.
NewPath (povinné) – Nová cesta nebo nový název.
Použití
Sekce “Použití”Name C:\Cesta\Example.txt As C:\NovaCesta\Example.txt – Přesunutí souboru.
Name C:\Cesta\Example.txt As C:\Cesta\NewExample.txt – Přejmenování souboru.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Získání všech PDF souborů pomocí funkce Dir a přesunutí do jiného adresáře pomocí cyklu while.
fileName = Dir(„C:\Zdroj\*.pdf“)
While fileName <> „“
Name „C:\Zdroj\“ & fileName As „C:\Destinace\“ & fileName
fileName = Dir
Wend
RmDir
Sekce “RmDir”Definice
Sekce “Definice”Smaže prázdný adresář.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Pokud se v dané složce nenachází žádné soubory, tak bude složka smazána. Pokud zde ale soubory nebo další složky existují, VBA zobrazí error, jelikož není možné složku smazat, proto je vhodné kombinovat s ošetřením errorů. Smazaný adresář se nenachází v koši, ale je kompletně odstraněn ze zařízení a není možné se k němu po smazání znovu vrátit. Je nutné zadat celou cestu ke složce, která má být smazána.
Vzorec
Sekce “Vzorec”RmDir(String)Argumenty
Sekce “Argumenty”String (povinný) – Cesta ke složce.
Použití
Sekce “Použití”RmDir „C:\Cesta\SlozkaKSmazani“ – Pokud je složka prázdná, bude vymazána.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Je možné vytvořit provizorní složku pomocí funkce MkDir, do kterého budou vloženy určité testovací soubory a po potřebném procesu budou soubory smazány a zadaná složka následně vymazána také.
MkDir „C:\TestFolder“
… Potřebný proces
RmDir „C:\TestFolder“
SetAttr
Sekce “SetAttr”Definice
Sekce “Definice”Nastaví atributy souboru nebo složky.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Je nutné zadat celou cestu k souboru, kde se soubor nachází a zároveň příponu specifikovaného souboru. Pokud soubor se ve specifikovaném adresáři nenachází, vrátí funkce error.
Vzorec
Sekce “Vzorec”SetAttr(String, Attributes)Argumenty
Sekce “Argumenty”PathName (Povinný) – Cesta k souboru nebo složce.
Attributes (Povinný) – Nové atributy, které lze zvolit:
| VB Konstanta | Hodnota | Popis |
|---|---|---|
| vbNormal | 0 | Normální |
| vbReadOnly | 1 | Pouze pro čtení |
| vbHidden | 2 | Skrytý |
| vbSystem | 4 | Systémový soubor (Není podporované pro Macintosh). |
| vbArchive | 32 | Soubor, který byl od poslední zálohy změněn. |
| vbAlias | 64 | Dodaný název souboru je aliasem. |
Použití
Sekce “Použití”SetAttr „C:\Cesta\Example.xlsx“, vbReadOnly – Nastavení Excelu pouze pro čtení.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Nastavení souboru na pouze pro čtení a následně pomocí funkce MsgBox zobrazení daného nastaveného atributu pomocí funkce GetAttr.
SetAttr „C:\Cesta\Example.txt“, vbReadOnly
MsgBox „Nové atributy souboru: “ & GetAttr(„C:\Cesta\Example.txt“)
Práce s textovými soubory
Sekce “Práce s textovými soubory”Open
Sekce “Open”Definice
Sekce “Definice”Otevře textový soubor pro čtení, zápis nebo úpravy.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Argumentem lze otevřít na pozadí jakýkoliv textový soubor, do kterého je možné dále zapisovat data pomocí dalších argumentů zejména pomocí cyklů nebo podmínek. Soubor se otevře pouze v pozadí zařízení, nebude otevřen přímo na obrazovce. Pokud navíc textový soubor ve specifikované cestě neexistuje, bude zde vytvořen se zadaným názvem. Je nutné dávat si pozor na jednotlivé režimy. Pokud je vybrán rešim Output, všechen text z textového souboru bude vymazán i při jakémkoliv neuložení otevřeného souboru. Existuje i argument Open pro otevření např. xlsx, docx nebo jiných dokumentů, který se zadává za cestou k danému dokumentu.
Vzorec
Sekce “Vzorec”Open „Cesta_k_souboru“ For režim As #číslo_souboruArgumenty
Sekce “Argumenty”Cesta_k_souboru – Celá cesta k souboru společně s příponou a názvem souboru.
Režim – Jak má být soubor otevřen:
- Input – Používá se pro čtení.
- Output – Používá se pro zápis (přepíše soubor).
- Append – Přidává data na konec souboru.
- Binary – Používá se pro binární soubory.
- Random – Používá se pro náhodný přístup.
Číslo_souboru – Identifikátor, o který soubor se jedná. V případě práce s více soubory ve VBA slouží jako vodítko k použití daného souboru.
Použití
Sekce “Použití”Open „C:\Cesta\data.txt“ For Output As #1 – Otevření souboru „data“ pro zápis s identifikátorem souboru. Pokud v souboru již data jsou, budou přepsána novým textem.
Open „C:\Cesta\data.txt“ For Input As #1 – Otevření souboru „data“ pouze pro čtení, tedy bez možnosti zapisování do souboru.
Open „C:\Cesta\data.txt“ For Input As #1 – Otevření souboru „data“ pro přidání dat na konec souboru. Pokud data již v souboru existují, nová data budou přidána na nový řádek na konci souboru.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Otevření souboru pro přidání dalšího textu do souboru pomocí příkazu Print bez přepsání již existujících dat. Následně bude soubor zavřen a uložen pomocí příkazu Close.
Open „C:\ Cesta\data.txt“ For Append As #1
Print #1, „Toto je testovací text“
Close #1
Následující kód nebude proveden z důvodu chyby zapsání, jelikož soubor je otevřen pouze pro čtení a tak není možné do něj hodnoty zapisovat. Pokud je nutné hodnoty zapisovat, je nutné použít příkaz Output nebo Append.
Open „C:\ Cesta\data.txt“ For Input As #1
Print #1, „Toto je testovací text“
Close #1
Otevři zadaný soubor pouze pro čtení a následně procházej každý řádek až do poslední vyplněného řádku v souboru pomocí EOF. Každý řádek bude načten do VBA pomocí Line Input a pomocí Debug.Print bude text nebo hodnota z řádku vypsána do okna Inmediate. Následně bude soubor zavřený příkazem Close.
Open “ C:\ Cesta\data.txt “ For Input As #1
Do While Not EOF(1)
Line Input #1, textLine
Debug.Print textLine
Loop
Close #1
Close
Sekce “Close”Definice
Sekce “Definice”Uzavře jeden nebo více otevřených souborů, aby nedošlo k poškození dat.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Argumentem se zavře již otevřený textový soubor pomocí příkazu Open. Pokud jsou v otevřeném souboru provedeny jakékoliv změny před zavřením, automaticky se soubor se změnami uloží při zavření. Existuje i argument Close pro zavření např. xlsx, docx nebo jiných dokumentů, který se zadává za cestou nebo proměnnou potřebného dokumentu.
Vzorec
Sekce “Vzorec”Close #číslo_souboruArgumenty
Sekce “Argumenty”číslo_souboru – Identifikátor, který soubor má být zavřen na základě čísla otevřeného souboru.
Použití
Sekce “Použití”Close #1 – Zavře specifický soubor, který je již otevřen.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Otevření souboru příkazem Open pro přidání dalšího textu do souboru pomocí příkazu Print. Následně bude soubor zavřen a uložen.
Open „C:\ Cesta\data.txt“ For Append As #1
Print #1, „Toto je testovací text“
Close #1
Otevře zadaný soubor pouze pro čtení pomocí příkazu Open a následně procházej každý řádek až do poslední vyplněného řádku v souboru pomocí EOF. Každý řádek bude načten do VBA pomocí Line Input a pomocí Debug.Print bude text nebo hodnota z řádku vypsána do okna Inmediate. Následně bude soubor zavřen.
Open “ C:\ Cesta\data.txt “ For Input As #1
Do While Not EOF(1)
Line Input #1, textLine
Debug.Print textLine
Loop
Close #1
Line Input
Sekce “Line Input”Definice
Sekce “Definice”Načte celý řádek textového souboru do VBA.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Po otevření textového souboru pomocí příkazu Open lze načíst jakýkoliv řádek z dokumentu, s kterým lze následně ve VBA dále pracovat popř. měnit.
Vzorec
Sekce “Vzorec”Line Input #číslo_souboru, proměnnáArgumenty
Sekce “Argumenty”číslo_souboru – Identifikátor, ze kterého souboru má být řádek načten do VBA.
proměnná – Vlastní název proměnné, která identifikuje další práci se souborem.
Použití
Sekce “Použití”Line Input #1, nazevPromenne – Načte řádek do proměnné „nazevPromenne“ z prvního otevřeného souboru.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Otevření souboru příkazem Open a načtení dat do proměnné textLine, který následně bude vypsán do okna Inmediate pomocí Debug.Print.
Open „C:\ Cesta\data.txt“ For Append As #1
Line Input #1, textLine
Debug.Print textLine
Otevře zadaný soubor pouze pro čtení pomocí příkazu Open a následně prochází každý řádek až do poslední vyplněného řádku v souboru pomocí EOF. Každý řádek bude načten do VBA a pomocí Debug.Print bude text nebo hodnota z řádku vypsána do okna Inmediate. Následně bude soubor zavřen příkazem Close.
Open “ C:\ Cesta\data.txt “ For Input As #1
Do While Not EOF(1)
Line Input #1, textLine
Debug.Print textLine
Loop
Close #1
Definice
Sekce “Definice”Zapisuje textový řetězec do souboru bez jakéhokoliv formátování.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Nejprve je nutné textový soubor otevřít pomocí příkazu Open, aby bylo možné zapisovat data. Je nutné zadat i text, který má být do specifikovaného souboru zapsán. Je nutné navíc soubor zavřít příkazem Close, aby zapsaný text byl uložen do souboru. Text v uvozovkách bude do souboru zapsán bez uvozovek. Pokud je nutné mít v souboru i uvozovky, je potřebné použít příkaz Write. Neplést příkaz s Debug.Print, které slouží k zapisování hodnot z proměnných nebo objektů do okna Inmediate.
Vzorec
Sekce “Vzorec”Print #číslo_souboru, textArgumenty
Sekce “Argumenty”číslo_souboru – Identifikátor, do kterého souboru má být text zapsán.
text – Text nebo hodnoty, které mají být do textového souboru zapsány.
Použití
Sekce “Použití”Print #1, „Test“ – Zapíše text „Test“ do prvního souboru.
Print #1, „1;2;3;4;5“ – Zapíše hodnoty do textového souboru.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Otevření souboru příkazem Open pro přidání dalšího textu do souboru. Následně bude soubor zavřen a uložen argumentem Close. Text bude navíc zapsán bez daných uvozovek.
Open „C:\ Cesta\data.txt“ For Append As #1
Print #1, „Toto je testovací text“
Close #1
Write
Sekce “Write”Definice
Sekce “Definice”Zapisuje text nebo hodnoty do souboru s formátováním.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Nejprve je nutné textový soubor otevřít pomocí příkazu Open, aby bylo možné zapisovat data. Je nutné zadat i text, který má být do specifikovaného souboru zapsán. Je potřebné navíc soubor zavřít příkazem Close, aby zapsaný text byl uložen do souboru. Pokud je navíc text, který má být zapsán, v uvozovkách, dané uvozovky budou do souboru také zapsány. Pokud má být text zapsán bez uvozovek, je nutné použít příkaz Print. Je možné přidávat hodnoty oddělené čárkami a další formáty.
Vzorec
Sekce “Vzorec”Write #číslo_souboru, textArgumenty
Sekce “Argumenty”číslo_souboru – Identifikátor, do kterého souboru má být text zapsán.
text – Text nebo hodnoty, které mají být do textového souboru zapsány.
Použití
Sekce “Použití”Write #1, „Test“ – Zapíše text „Test“ do prvního souboru s uvozovkami.
Write #1, „Test“, 123, True – Zapíše hodnoty do textového souboru s formátováním.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Otevření souboru příkazem Open pro přidání dalšího textu do souboru. Následně bude soubor zavřen a uložen argumentem Close. Text bude navíc zapsán s uvozovkami.
Open „C:\ Cesta\data.txt“ For Append As #1
Write #1, „Toto je testovací text“
Close #1
EOF
Sekce “EOF”Definice
Sekce “Definice”Zjišťuje, zda bylo dosaženo konce souboru.
Praktické vysvětlení
Sekce “Praktické vysvětlení”Příkaz se používá zejména při cyklech, kdy má být procházen každý řádek v textovém souboru a je nutné nějak zjistit dosažení konce souboru. Číslo souboru se navíc dává bez hashtagu na rozdíl od ostatních textových příkazů. Výstupem bude binární proměnná buďto True, kdy je konec souboru, nebo False.
Vzorec
Sekce “Vzorec”EOF(číslo_souboru)Argumenty
Sekce “Argumenty”číslo_souboru – Identifikátor, u kterého souboru má být zjištěn konec souboru.
Použití
Sekce “Použití”EOF(1) – Identifikátor prvního souboru, u kterého souboru má být zjištěn konec souboru.
Použití s ostatními funkcemi
Sekce “Použití s ostatními funkcemi”Otevře zadaný soubor pouze pro čtení pomocí příkazu Open a následně prochází každý řádek až do poslední vyplněného řádku. Každý řádek bude načten do VBA příkazem Line Input a pomocí Debug.Print bude text nebo hodnota z řádku vypsána do okna Inmediate. Následně bude soubor zavřen příkazem Close.
Open “ C:\ Cesta\data.txt “ For Input As #1
Do While Not EOF(1)
Line Input #1, textLine
Debug.Print textLine
Loop
Close #1
FileSystemObject
Sekce “FileSystemObject”FileSystemObject (FSO) je další speciální objekt ve VBA, který umožňuje také práci se soubory a složkami. Poskytuje metody pro vytváření, kopírování, přesouvání a mazání souborů a složek, stejně jako pro čtení a zápis do textových souborů.
Aby bylo možné FSO používat, musíš nejprve vytvořit instanci tohoto objektu pomocí:
Set [název proměnné] = CreateObject(„Scripting.FileSystemObject“)Kontrola existence souboru
Sekce “Kontrola existence souboru”Pokud soubor ve složce existuje, bude otevřen, jinak bude zobrazena hláška pomocí MsgBox, že soubor ve složce neexistuje.
Sub FileExists()
Dim fso as Object
Dim wb as Workbook
Set fso = CreateObject(„Scripting.FileSystemObject“)
If fso.FileExists(„C:\test.xlsx“) = True Then
Set wb = Workbooks.Open(„C:\test.xlsx“)
Else
MsgBox(„Soubor neexistuje“)
End If
End Sub
Kontrola existence složky
Sekce “Kontrola existence složky”Pokud složka v dané cestě existuje, budou všechny soubory procházeny pomocí cyklu a zobrazeny názvy jednotlivých souborů do okna Inmediate pomocí příkazu Debug.Print, jinak bude zobrazena hláška pomocí MsgBox, že složka neexistuje.
Sub FolderExists()
Dim fso as Object
Set fso = CreateObject(„Scripting.FileSystemObject“)
If fso.FolderExists(„C:\testSlozka“) = True Then
For Each file In fso.getFolder(„C:\testSlozka“) .Files
Debug.Print file.Name
Next file
Else
MsgBox(„Složka neexistuje“)
End If
End Sub
Kontrola existence disku
Sekce “Kontrola existence disku”Pokud disk existuje, bude zobrazena hláška pomocí MsgBox, že disk existuje, jinak bude zobrazena hláška, že disk neexistuje.
Sub DriveExists()
Dim fso as Object
Set fso = CreateObject(„Scripting.FileSystemObject“)
If fso.DriveExists(„C:\“) = True Then
MsgBox(„Disk existuje.“)
Else
MsgBox(„Disk neexistuje.“)
End If
End Sub
Kopírování souboru
Sekce “Kopírování souboru”FSO umožňuje i kopírování souborů. Nejprve je potřeba stanovit cestu k souboru a název souboru s příponou, který má být zkopírován a následně cestu ke složce, kde má být soubor zkopírován. Soubor tak bude v obou složkách, jelikož se pouze kopíruje, ale nepřesouvá. Pokud xlsx soubor „Test“ ve složce existuje, bude zkopírován do nové složky.
Sub CopyFile()
Dim fso as Object
Set fso = CreateObject(„Scripting.FileSystemObject“)
fso.CopyFile „C:\SourceFolder\Test.xlsx“, „c:\DestinationFolder\“
End Sub
Přesouvání souboru
Sekce “Přesouvání souboru”Pro přesouvání souborů je nutné zadat cestu k souboru, název a příponu souboru, který má být přesunut a následně cestu ke složce, kde má být soubor přesunut. Soubor tak již nebude ve zdrojové složce ale pouze ve složce cílové. Je nutné si dávat pozor, zdali cílová složka skutečně existuje, pokud ne, tak soubor bude odebrán ze zdrojové složky a už ho nebude možné nalézt, jelikož se neměl kam přesunout, protože cílová složka neexistuje.
Sub MoveFile()
Dim fso as Object
Set fso = CreateObject(„Scripting.FileSystemObject“)
fso.MoveFile „C:\SourceFolder\Test.xlsx“, „c:\DestinationFolder\“
End Sub
Smazání souboru
Sekce “Smazání souboru”Pro smazání souboru je nutné zadat celou cestu k souboru, název i příponu souboru. Po smazání souboru nebude možné soubor získat zpět, nebude přesunut ani do koše, ale bude kompletně vymazán ze zařízení. Proto je vhodné si udělat zálohu v případě, kdy má být příkaz pouze testován.
Sub DeleteFile()
Dim fso as Object
Set fso = CreateObject(„Scripting.FileSystemObject“)
fso.DeleteFile „C:\SourceFolder\Test.xlsx “
End Sub
Vytvoření složky
Sekce “Vytvoření složky”Pro tvorbu složky je nutné zadat cestu, kam má být složka vytvořena. Pokud zdrojová cesta neexistuje, daná složka nebude vytvořena. Pokud existuje, vytvoří se daná složka do dané cesty.
Sub CreateFolder()
Dim fso as Object
Set fso = CreateObject(„Scripting.FileSystemObject“)
fso.CreateFolder „C:\SourceFolder\NewFolder“
End Sub
Kopírování složky
Sekce “Kopírování složky”FSO umožňuje i kopírování složek. Nejprve je potřeba stanovit cestu ke zdrojové složce, která má být zkopírována a následně cestu k cílové složce, kde má být daná složka zkopírována. Složka tak bude v obou složkách (zdrojová i cílová), jelikož se pouze kopíruje, ale nepřesouvá. V tomto příkladu je složka „NewFolder“ zkopírována do složky „DestinationFolder“, ale stále bude i v cestě „SourceFolder“. Se složkou „NewFolder“ se zkopírují zároveň všechny soubory a složky, které v této složce jsou.
Sub CopyFolder()
Dim fso as Scripting.FileSystemObject
Set fso = CreateObject(„Scripting.FileSystemObject“)
fso.CopyFolder „C:\SourceFolder\NewFolder“, „C:\DestinationFolder\“
End Sub
Přesouvání složky
Sekce “Přesouvání složky”FSO umožňuje i přesouvání složek. Nejprve je potřeba stanovit cestu ke zdrojové složce, která má být přesunuta a následně cestu k cílové složce, kam má být složka vložena. Složka tak bude již pouze v cílové složce. Je nutné ošetřit, zdali cílová složka, kam se má složka přesunout, existuje. Pokud ne, bude složka přesunuta do neexistující cesty a tak už se k ní nebude možné dostat stejně jako k případným souborům a složkám, které jsou v přesouvající složce. Při testování příkazu je vhodné si udělat kopii složky, aby bylo zaručeno, že cílová složka existuje. V tomto příkladu je složka „NewFolder“ přesunuta do složky „DestinationFolder“, ale stále bude a v cestě „SourceFolder“ již nebude existovat. Se složkou „NewFolder“ se přesunou zároveň všechny soubory a složky, které v této složce jsou.
Sub MoveFolder()
Dim fso as Object
Set fso = CreateObject(„Scripting.FileSystemObject“)
fso.MoveFolder „C:\SourceFolder\NewFolder“, „C:\DestinationFolder\“
End Sub
Přesouvání složky
Sekce “Přesouvání složky”Pro smazání složky je nutné zadat celou cestu k složce, která má být smazána, přičemž se smaže právě poslední sloka ve specifikované cestě. Při smazání složky se smažou i všechny složky a soubory, které v dané složce jsou. Složku nebude možné získat zpět, jelikož není přesunuta do koše, ale bude kompletně vymazána ze zařízení. Proto je vhodné udělat zálohu složky v případě, kdy má být příkaz pouze testován.
Sub DeleteFolder()
Dim fso as Object
Set fso = CreateObject(„Scripting.FileSystemObject“)
fso.DeleteFolder „C:\SourceFolder\NewFolder“
End Sub
© 2026 Excelland
