Přejít na hlavní obsah

Excel VBA: práce s cestami a adresáři

Microsoft Excel je jedním z nejoblíbenějších nástrojů pro práci s daty. Ne všichni uživatelé však znají možnosti automatizace úloh v Excelu pomocí programovacího jazyka VBA (Visual Basic for Applications). V tomto článku se podíváme na některé funkce VBA související s prací s cestami a adresáři, které vám umožní efektivněji spravovat soubory v Excelu.

Cesty a adresáře hrají důležitou roli při práci se soubory. Používají se k určení umístění souboru, pohybu mezi složkami, přístupu k souborům a dalším činnostem. VBA poskytuje řadu funkcí pro práci s cestami a adresáři, které vám pomohou automatizovat procesy práce se soubory v Excelu.

Jednou z nejpoužívanějších funkcí VBA je funkce CurDir. Vrátí aktuální adresář, ve kterém je soubor s makry. To je velmi užitečné, například pokud potřebujete vytvořit nový soubor a uložit jej do stejného adresáře jako soubor s makry.

Další užitečnou funkcí je funkce GetOpenFilename. Pomocí ní lze otevřít dialogové okno pro výběr souboru a získat cestu k vybranému souboru. Také pomocí funkce GetSaveAsFilename můžete otevřít dialogové okno pro uložení souboru a získat cestu pro uložení. Tyto funkce umožňují uživateli vybrat soubory a adresáře, aniž by musel ručně zadávat cesty.

Je důležité si uvědomit, že funkce VBA pro práci s cestami a adresáři podporují zpětnou kompatibilitu se souborovým systémem Windows. Při používání funkcí v jiných operačních systémech může být nutné upravit kód.

Práce s cestami v Excelu VBA

Cesty často se používá při práci se soubory v Excelu VBA. Znalost základních způsobů práce s cestami vám umožní efektivně spravovat souborový systém a zpracovávat soubory v makrech.

Absolutní a relativní cesty - to jsou dva hlavní typy cest, které lze použít v VBA. Absolutní cesta označuje úplnou cestu k souboru, počínaje kořenovým adresářem. Relativní cesta označuje cestu k souboru vzhledem k aktuálnímu adresáři.

Pracujeme s absolutními cestami:

Dim filePath As StringfilePath = "C:\Users\UserName\Documents\example.xlsx"

V uvedeném příkladu definujeme proměnnou filePath, která obsahuje absolutní cestu k souboru s příponou XLSX. Tato cesta zůstane nezměněna bez ohledu na aktuální adresář, který obsahuje makro sešit Excel.

Pracujeme s relativními cestami:

Dim filePath As StringDim currentPath As StringcurrentPath = ThisWorkbook.PathfilePath = currentPath & "\example.xlsx"

V tomto příkladu definujeme proměnnou filePath, která obsahuje relativní cestu k souboru s příponou XLSX. Nejprve definujeme proměnnou currentPath, která obsahuje aktuální adresář, který obsahuje knihu Excel s makrem. Poté zkombinujeme současnou cestu s názvem souboru, abychom získali celou cestu.

Konkatinace cest:

Dim folderPath As StringDim fileName As StringDim filePath As StringfolderPath = "C:\Users\UserName\Documents"fileName = "example.xlsx"filePath = folderPath & "\" & fileName

V tomto příkladu definujeme proměnnou folderPath, která obsahuje cestu ke složce, a proměnnou fileName, která obsahuje název souboru. Poté tyto dvě proměnné konkatenujeme a mezi ně přidáme oddělovací znak"\", abychom získali úplnou cestu k souboru.

Znalost základních způsobů práce s cestami vám umožní snadno spravovat souborový systém a provádět různé operace se soubory v Excelu VBA.

Vytváření a změna cest

V programovacím jazyce VBA existují různé metody pro vytváření a úpravy cest souborů a adresářů. To umožňuje programátorům pracovat se souborovým systémem, vytvářet nové soubory a složky a vyhledávat a přesouvat soubory.

K vytvoření a změně cest v Excelu VBA lze použít následující metody a vlastnosti:

Metoda / VlastnostPopis
CurDir Vrátí nebo nastaví aktuální pracovní adresář.
ChDir Mění aktuální pracovní směrnici.
MkDir Vytváří nový adresář.
RmDir Odstraní adresář.
Name Přejmenuje soubor nebo adresář.
Dir Vrátí první soubor, který splňuje zadanou cestu a filtr.

Pomocí těchto metod a vlastností můžete vytvářet a odstraňovat adresáře, měnit aktuální pracovní adresář, procházet souborovým systémem a další.

Například následující kód vytvoří nové adresář s názvem "Nová složka" v aktuálním pracovním adresáři:

Sub CreateNewFolder()MkDir "Новая папка"End Sub

Tímto způsobem program vytvoří novou složku s názvem "Nová složka" v aktuálním pracovním adresáři.

Jakmile zvládnete práci s cestami a adresáři v Excelu VBA, budete moci flexibilně spravovat souborový systém a provádět různé operace se soubory a složkami.

Informace o cestách a adresářích

Při práci se soubory a adresáři v Excelu VBA je často nutné získat informace o cestách, názvech souborů a adresářích. V jazyce VBA existuje několik způsobů, jak takové informace získat.

Jedním ze způsobů je použití vestavěných funkcí pro práci s cestami. Například funkce CurDir() vrací aktuální pracovní adresář a funkce Dir() a getattr () umožňují získat informace o souboru nebo adresáři.

Dalším způsobem je použití objektů z knihovny Scripting.FileSystemObject . Tyto objekty umožňují získat informace o souborech a adresářích a provádět různé operace s nimi. Například objekt FileSystemObject má metody getfolder () a GetFile (), které umožňují získat informace o adresáři a souboru.

K získání informací o souboru lze také použít různé vlastnosti objektu Workbook. Například vlastnost FullName vrátí plný název souboru s cestou, vlastnost Path vrátí pouze cestu k souboru a vlastnost Name vrátí pouze název souboru bez cesty.

Získané informace o cestách a adresářích lze použít k provádění různých operací, jako je kopírování nebo mazání souborů, nebo k zobrazení cesty k souboru ve vlastní formě.

Je důležité si uvědomit, že při práci s cestami a adresáři je třeba vzít v úvahu funkce operačního systému, na kterém je program spuštěn. Například ve Windows je cesta k souboru obvykle nastavena pomocí reverzních slásní (například "С:\Папка\файл..xlsx") a v macOS pomocí přímých slásní (např. "/složka/soubor.xlsx").

V Excelu VBA tedy existují různé způsoby, jak získat informace o cestách a adresářích, které lze použít při práci se soubory a adresáři. Použití vestavěných funkcí, objektů knihovny Scripting.FileSystemObject a vlastnosti objektu Workbook umožňuje efektivní správu cest a adresářů v programu VBA.

Adresáře v Excelu VBA

V programovacím jazyce VBA pro Excel existuje řada metod a vlastností, které vám umožňují pracovat s adresáři a cestami souborového systému. To je velmi užitečné, protože vám umožňuje automatizovat proces práce se soubory, vyhledávat a filtrovat soubory, kontrolovat soubory a další.

Jedním z hlavních objektů, které reprezentují adresář VBA, je objekt FileSystemObject z knihovny Scripting . Chcete-li pracovat s adresáři, musíte nejprve vytvořit instanci tohoto objektu:

Dim fso As ObjectSet fso = CreateObject("Scripting.FileSystemObject")

Po vytvoření objektu FileSystemObject lze pro práci s adresáři použít jeho metody a vlastnosti:

  • fso.Getfolder (path) - získání objektu, který představuje adresář na uvedené cestě.
  • fso.Getspecialfolder (FolderType) - získání objektu, který představuje speciální adresář systému. Například fso.Getspecialfolder (0) vrací objekt představující adresář systému Windows.
  • fso.CreateFolder (path) - vytvoření nového adresáře na uvedené cestě.
  • fso.DeleteFolder(path[, force]- odstranění adresáře na uvedené cestě. Pokud je parametr force True, k odstranění dojde i v případě, že adresář není prázdný.
  • fso.GetAbsolutePathName (path) - získání absolutní cesty podle relativního nebo krátkého názvu souboru nebo adresáře.
  • fso.Getdrive (path) je získání objektu, který představuje logický disk na zadané cestě.
  • fso.Getparentfoldername (path) - získání názvu nadřazeného adresáře pro zadanou cestu.
  • fso.GetTempName () je generování jedinečného názvu dočasného souboru.

K obcházení adresářů lze použít metodu fso.GetFolder (path) pro získání objektu adresáře a poté přesměrovat jeho obsah pomocí vlastnosti Folder.Files a Folder.Subfolders . Například:

Dim folderPath As StringfolderPath = "C:\Folder"Dim folder As ObjectSet folder = fso.GetFolder(folderPath)Dim file As ObjectFor Each file In folder.Files'работа с файломNext fileDim subfolder As ObjectFor Each subfolder In folder.Subfolders'работа с поддиректориейNext subfolder

Lze také použít metodu fso.BuildPath (path, name) pro vytvoření cesty k souborům nebo adresářům s automatickým přidáním oddělovače:

Dim folderPath As StringfolderPath = fso.BuildPath("C:\Folder", "Subfolder")Dim filePath As StringfilePath = fso.BuildPath(folderPath, "file.txt")

VBA jsou k dispozici také vlastnosti pro informace o adresářích:

  • folder.Path-vrací řádek s cestou do adresáře.
  • folder.Name-vrací název adresáře.
  • folder.DateCreated-vrací datum vytvoření adresáře.
  • folder.DateLastModified-vrací datum poslední změny adresáře.
  • folder.Size-vrací velikost adresáře v bajtech.
  • folder.Attributes-vrací atributy adresáře.

Práce s cestami a adresáři v Excelu VBA umožňuje výrazně zjednodušit automatizaci zpracování souborů, vyhledávání a filtrování. Pomocí objektu FileSystemObject lze snadno vytvářet, mazat a obcházet adresáře a získávat o nich informace.

Vytváření a mazání adresářů

Pro práci s adresáři v Excelu VBA existují speciální metody, které vám umožňují vytvářet a odstraňovat adresáře v počítači.

Metoda MkDir slouží k vytvoření nového adresáře. Jeho syntaxe je následující:

MkDir "путь_к_директории"

Například následující kód vytvoří v aktuálním adresáři nový adresář:

Sub СоздатьДиректорию()MkDir "Новая Директория"End Sub

K odstranění adresáře se používá metoda RmDir. Jeho syntaxe je následující:

RmDir "путь_к_директории"

Následující kód například odstraní adresář "nové adresáře" v aktuálním adresáři:

Sub УдалитьДиректорию()RmDir "Новая Директория"End Sub

Odstranění adresáře je možné pouze tehdy, je-li prázdný. Pokud adresář obsahuje soubory nebo jiná adresáře, je nutné je před odstraněním odstranit.

Stojí také za zvážení, že vytváření a mazání adresářů může vést ke ztrátě dat, takže při používání těchto metod byste měli být opatrní. Před provedením operací s adresáři se doporučuje přidat další kontroly.