Denne opplæringen vil demonstrere hvordan du bruker GetFolder- og GetFile -metodene i FileSystemObject.
Få mappe- og filegenskaper med VBA FileSystemObject
Metoden GetFolder returnerer et mappeobjekt som tilsvarer mappen i en spesifisert bane og gir deg tilgang til egenskapene. GetFile -metoden gjør det samme med filen som er angitt.
Sett VBA -referanse
Først, når du bruker FileSystemObjects, må du kanskje angi en referanse til VB-skriptets kjøretidsbibliotek: åpne Visual Basic Editor (ALT+F11), velg Verktøy> Referanser fra rullegardinmenyen og merk av i avmerkingsboksen for 'Microsoft Scripting Runtime'.
FileSystemObject
For det andre må du opprette FileSystemObject:
12 | Dim FSO som nytt filsystemobjektSett FSO = CreateObject ("Scripting.FileSystemObject") |
Nå har du tilgang til GetFolder og de andre FileSystemObject -metodene.
Bruk av GetFolder -metode
Etter å ha spesifisert mappen du vil ha tilgang til
1 | Sett fld = FSO.GetFolder ("C: \ Src \") |
du kan kopiere den:
1 | fld.Copy "C: \ NewFolder \" |
flytt den:
1 | fld.Move "C: \ NewFolder \" |
slett det:
1 | fld.Slett |
eller opprett en ny tekstfil i den:
1 | fld.CreateTextFile “NewTextFile.txt” |
Ved å bruke denne metoden får du tilgang til mappens egenskaper, for eksempel attributtene (fld.Attributes), datoen og klokkeslettet da den ble opprettet (fld.DateCreated), sist åpnet (fld.DateLastAccess), sist endret (fld.DateLastModified ), stasjonsbokstaven (fld.Drive), navnet og kortnavnet (fld.Name, fld.ShortName), banen og den korte banen (fld.Path, fld.ShortPath), dens størrelse (fld.Size), dens type (fld.Type), dens overordnede mappe (fld.ParentFolder), sjekk om det er en rotmappe (fld.IsRootFolder) eller du kan gå gjennom, telle osv. dens filer (fld.Files) eller undermapper (fld. Undermapper).
Å sette alt sammen i en prosedyre vil se slik ut:
123456789101112131415161718192021222324 | Sub FSOGetFolder ()Dim FSO som nytt filsystemobjektSett FSO = CreateObject ("Scripting.FileSystemObject")Sett 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.TypeFor hver brette i fld. SubmapperDebug.Print fold.NameNeste brettFor hver fil i fld.FilesDebug.Print fil.NameNeste filSlutt Sub |
Vær oppmerksom på at du må trykke Ctrl+G for å se resultatet av Debug.Print -kommandoen i VBA -vinduet umiddelbart.
GetParentFolderName -metode
Alternativt til ovennevnte måte kan du få tilgang til navnet på en mappe overordnet mappe ved å bruke denne koden:
1234 | Dim FSO som nytt filsystemobjektSett FSO = CreateObject ("Scripting.FileSystemObject")ParentFold = FSO.GetParentFolderName ("C: \ ParentTest \ Test \") |
ParentFold vil i dette tilfellet være "C: \ ParentTest \".
Vær oppmerksom på at denne metoden ikke løser banen, og den kontrollerer heller ikke om den angitte banen finnes.
GetSpecialFolder -metode
Med GetSpecialFolder -metoden kan du ved å sende 0, 1 eller 2 som et argument få Windows -mappebanen (med filer installert av Windows -operativsystemet), systemmappebanen (med biblioteker, fonter og enhetsdrivere) og midlertidige henholdsvis mappebane (mappen som brukes til lagring av midlertidige filer).
1234567 | Sub FSOGetSpecialFolder ()Dim FSO som nytt filsystemobjektSett FSO = CreateObject ("Scripting.FileSystemObject")Debug.Print FSO.GetSpecialFolder (0) ‘Resultatet kan være: C: \ Windows \ System32Slutt Sub |
GetFile -metode
Du kan bruke GetFile -metoden på en lignende måte som GetFolder -metoden. Etter å ha spesifisert filen du vil ha tilgang til
1 | Sett fil = FSO.GetFile ("C: \ Src \ Test.xlsx") |
du kan kopiere den:
1 | fil.Kopi "C: \ Dst \" |
flytt den:
1 | fil.Flytt "C: \ Dst \" |
slett det:
1 | fil.Slett |
eller åpne det som et TextStream -objekt:
1 | fil.OpenAsTextStream |
Filens egenskaper, for eksempel attributter, dato og klokkeslett da den ble opprettet, sist åpnet eller sist endret, stasjonens bokstav, navn og korte navn, bane og korte bane, størrelse, type og overordnet mappe kan nås på samme måte som beskrevet i GetFolder -metoden.