Ta vadnica bo pokazala, kako uporabljati metode GetFolder in GetFile za FileSystemObject.
Pridobite lastnosti map in datotek z VBA FileSystemObject
Metoda GetFolder vrne predmet mape, ki ustreza mapi na podani poti in vam omogoča dostop do njenih lastnosti. Metoda GetFile naredi enako z navedeno datoteko.
Nastavite referenco VBA
Najprej boste morali pri uporabi FileSystemObjects nastaviti sklic na knjižnico časa izvajanja skripta VB: odprite urejevalnik Visual Basic (ALT+F11), v spustnem meniju izberite Orodja> Reference in potrdite polje "Microsoft Scripting Runtime".
FileSystemObject
Drugič, morate ustvariti FileSystemObject:
12 | Zatemni FSO kot nov datotečni sistemObjektNastavite FSO = CreateObject ("Scripting.FileSystemObject") |
Zdaj imate dostop do GetFolder in drugih metod FileSystemObject.
Uporaba metode GetFolder
Ko določite mapo, do katere želite dostopati
1 | Nastavi fld = FSO.GetFolder ("C: \ Src \") |
lahko kopirate:
1 | fld.Copy "C: \ NewFolder \" |
premakni:
1 | fld. Premaknite "C: \ NewFolder \" |
Zbriši:
1 | fld.Izbriši |
ali v njem ustvarite novo besedilno datoteko:
1 | fld.CreateTextFile »NewTextFile.txt« |
S to metodo dobite dostop do lastnosti mape, kot so njeni atributi (fld.Attributes), datum in čas, ko je bila ustvarjena (fld.DateCreated), zadnji dostop (fld.DateLastAccessed), zadnja sprememba (fld.DateLastModified ), črko pogona (fld.Drive), njegovo ime in kratko ime (fld.Name, fld.ShortName), njegovo pot in kratko pot (fld.Path, fld.ShortPath), njegovo velikost (fld. Velikost), njeno vnesite (fld.Type), svojo nadrejeno mapo (fld.ParentFolder), preverite, ali gre za korensko mapo (fld.IsRootFolder) ali lahko prelistate, preštejete itd. njene datoteke (fld.Files) ali podmape (fld. Podmape).
Če bi vse skupaj združili v postopek, bi bilo videti tako:
123456789101112131415161718192021222324 | Sub FSOGetFolder ()Zatemni FSO kot nov datotečni sistemObjektNastavite FSO = CreateObject ("Scripting.FileSystemObject")Nastavi 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.TypeZa vsak pregib V fld.SubFoldersOdpravljanje napak. Natisni pregib. ImeNaslednji pregibZa vsak fil In fld.FilesOdpravljanje napak. Natisni ime filNaslednji filEnd Sub |
Upoštevajte, da morate pritisniti Ctrl+G, da vidite rezultat ukaza Debug.Print v neposrednem oknu VBA.
Metoda GetParentFolderName
Namesto zgoraj omenjenega načina lahko dostopate do imena nadrejene mape z uporabo te kode:
1234 | Zatemni FSO kot nov datotečni sistemObjektNastavite FSO = CreateObject ("Scripting.FileSystemObject")ParentFold = FSO.GetParentFolderName ("C: \ ParentTest \ Test \") |
ParentFold bo v tem primeru "C: \ ParentTest \".
Upoštevajte, da ta metoda ne reši poti niti ne preveri obstoja navedene poti.
Metoda GetSpecialFolder
Z metodo GetSpecialFolder lahko z argumentom 0, 1 ali 2 dobite pot do mape Windows (z datotekami, ki jih namesti operacijski sistem Windows), pot sistemske mape (s knjižnicami, pisavami in gonilniki naprav) in začasno pot do mape (mapa, ki se uporablja za shranjevanje začasnih datotek).
1234567 | Sub FSOGetSpecialFolder ()Zatemni FSO kot nov datotečni sistemObjektNastavite FSO = CreateObject ("Scripting.FileSystemObject")Debug.Print FSO.GetSpecialFolder (0) 'Rezultat je lahko: C: \ Windows \ System32End Sub |
Metoda GetFile
Metodo GetFile lahko uporabite na zelo podoben način kot metodo GetFolder. Ko določite datoteko, do katere želite dostopati
1 | Nastavi fil = FSO.GetFile ("C: \ Src \ Test.xlsx") |
lahko kopirate:
1 | fil.Copy "C: \ Dst \" |
premakni:
1 | fil.Premiči "C: \ Dst \" |
Zbriši:
1 | fil.Izbriši |
ali pa ga odprite kot objekt TextStream:
1 | fil.OpenAsTextStream |
Do lastnosti datoteke, kot so njeni atributi, datum in čas, ko je bila ustvarjena, zadnji dostop ali zadnja sprememba, črka pogona, ime in kratko ime, pot in kratka pot, velikost, vrsta in njena nadrejena mapa, lahko dostopate na enak način kot je opisano v metodi GetFolder.