VBA GetFolder & GetFile (Získat vlastnosti souboru a složky)

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.

wave wave wave wave wave