Tento tutoriál předvede, jak používat metody GetFolder a GetFile FileSystemObject.
Získejte vlastnosti složky a souboru pomocí VBA FileSystemObject
Metoda GetFolder vrací objekt Folder odpovídající složce v zadané cestě a umožňuje přístup k jejím vlastnostem. Metoda GetFile provede to samé se zadaným souborem.
Nastavte referenci VBA
Za prvé, při používání FileSystemObjects budete možná muset nastavit odkaz na knihovnu run-time skriptů VB: otevřete editor jazyka Visual Basic (ALT+F11), v rozevírací nabídce vyberte Nástroje> Reference a zaškrtněte políčko „Microsoft Scripting Runtime“.
FileSystemObject
Za druhé, musíte vytvořit FileSystemObject:
12 | Dim FSO jako nový FileSystemObjectNastavit FSO = CreateObject ("Scripting.FileSystemObject") |
Nyní máte přístup k GetFolder a dalším metodám FileSystemObject.
Použití metody GetFolder
Po zadání složky, ke které chcete získat přístup
1 | Nastavit fld = FSO.GetFolder ("C: \ Src \") |
můžete to zkopírovat:
1 | fld.Copy "C: \ NewFolder \" |
přesunout:
1 | fld.Přesunutí "C: \ NewFolder \" |
smazat to:
1 | fld. Smazat |
nebo v něm vytvořte nový textový soubor:
1 | fld.CreateTextFile „NewTextFile.txt“ |
Pomocí této metody získáte přístup k vlastnostem složky, jako jsou její atributy (fld.Attributes), datum a čas, kdy byla vytvořena (fld.DateCreated), poslední přístup (fld.DateLastAccessed), poslední změna (fld.DateLastModified ), písmeno jeho disku (fld.Drive), jeho název a krátký název (fld.Name, fld.ShortName), jeho cesta a krátká cesta (fld.Path, fld.ShortPath), jeho velikost (fld.Size), jeho zadejte (fld.Type), jeho nadřazenou složku (fld.ParentFolder), zkontrolujte, zda se jedná o kořenovou složku (fld.IsRootFolder), nebo můžete procházet, počítat atd. jeho soubory (fld.Files) nebo podsložky (fld. Podsložky).
Dát to všechno dohromady do procedury by vypadalo takto:
123456789101112131415161718192021222324 | Dílčí FSOGetFolder ()Dim FSO jako nový FileSystemObjectNastavit FSO = CreateObject ("Scripting.FileSystemObject")Nastavit fld = FSO.GetFolder ("C: \ Src \")Debug.Print fld.DateCreatedDebug.Print fld.DriveDebug.Print fld.NameDebug.Print fld.ParentFolderDebug.Print fld.PathDebug.Print fld.ShortPathDebug.Print fld.SizeDebug.Print fld.Files.CountDebug.Print fld. TypPro každý záhyb v podadresáříchDebug.Print fold.NameDalší skládáníZa každý soubor ve fld.FilesDebug.Print fil.NameDalší filEnd Sub |
Pamatujte, že stisknete Ctrl+G, abyste viděli výsledek příkazu Debug.Print v bezprostředním okně VBA.
Metoda GetParentFolderName
Alternativně k výše uvedenému způsobu můžete přistupovat k názvu nadřazené složky složky pomocí tohoto kódu:
1234 | Dim FSO jako nový FileSystemObjectNastavit FSO = CreateObject ("Scripting.FileSystemObject")ParentFold = FSO.GetParentFolderName ("C: \ ParentTest \ Test \") |
ParentFold bude v tomto případě „C: \ ParentTest \“.
Tato metoda nevyřeší cestu ani nezkontroluje existenci zadané cesty.
Metoda GetSpecialFolder
S metodou GetSpecialFolder předáním argumentu 0, 1 nebo 2 můžete získat cestu ke složce Windows (se soubory nainstalovanými operačním systémem Windows), cestu k systémové složce (s knihovnami, fonty a ovladači zařízení) a dočasnou cesta ke složce (složka, která slouží k ukládání dočasných souborů), resp.
1234567 | Sub FSOGetSpecialFolder ()Dim FSO jako nový FileSystemObjectNastavit FSO = CreateObject ("Scripting.FileSystemObject")Debug.Print FSO.GetSpecialFolder (0) ‘Výsledkem může být: C: \ Windows \ System32End Sub |
Metoda GetFile
Metodu GetFile můžete použít velmi podobným způsobem jako metodu GetFolder. Po zadání souboru, ke kterému chcete získat přístup
1 | Nastavit fil = FSO.GetFile ("C: \ Src \ Test.xlsx") |
můžete to zkopírovat:
1 | fil.Copy "C: \ Dst \" |
přesunout:
1 | fil.Move "C: \ Dst \" |
smazat to:
1 | fil.Delete |
nebo jej otevřete jako objekt TextStream:
1 | fil.OpenAsTextStream |
K vlastnostem souboru, jako jsou jeho atributy, datum a čas, kdy byl vytvořen, naposledy přístupný nebo naposledy upravován, písmeno jeho jednotky, název a krátký název, cesta a krátká cesta, velikost, typ a jeho nadřazená složka, lze přistupovat stejným způsobem jak je popsáno v metodě GetFolder.