Denna handledning kommer att visa hur du använder metoderna GetFolder och GetFile i FileSystemObject.
Skaffa mapp- och filegenskaper med VBA FileSystemObject
Metoden GetFolder returnerar ett mappobjekt som motsvarar mappen i en angiven sökväg och låter dig komma åt dess egenskaper. Metoden GetFile gör samma sak med den angivna filen.
Ställ in VBA -referens
Först, när du använder FileSystemObjects, kan du behöva ange en referens till VB-skriptets körtidsbibliotek: öppna Visual Basic Editor (ALT+F11), välj Verktyg> Referenser från rullgardinsmenyn och markera kryssrutan för 'Microsoft Scripting Runtime'.
FileSystemObject
För det andra måste du skapa FileSystemObject:
12 | Dim FSO som nytt filsystemsystemAnge FSO = CreateObject ("Scripting.FileSystemObject") |
Nu har du tillgång till GetFolder och de andra FileSystemObject -metoderna.
Användning av GetFolder -metod
Efter att ha angett den mapp du vill komma åt
1 | Ställ in fld = FSO.GetFolder ("C: \ Src \") |
du kan kopiera det:
1 | fld.Copy "C: \ NewFolder \" |
flytta den:
1 | fld.Move "C: \ NewFolder \" |
radera det:
1 | fld.Delete |
eller skapa en ny textfil i den:
1 | fld.CreateTextFile “NewTextFile.txt” |
Genom att använda den här metoden får du tillgång till mappens egenskaper som dess attribut (fld.Attributes), datum och tid då den skapades (fld.DateCreated), senast åtkomlig (fld.DateLastAccess), senast ändrad (fld.DateLastModified ), dess enhets bokstav (fld.Drive), dess namn och kortnamn (fld.Name, fld.ShortName), dess sökväg och korta väg (fld.Path, fld.ShortPath), dess storlek (fld.Size), dess typ (fld.Type), dess överordnade mapp (fld.ParentFolder), kontrollera om det är en rotmapp (fld.IsRootFolder) eller så kan du bläddra igenom, räkna etc. dess filer (fld.Files) eller undermappar (fld. Undermappar).
Att sätta ihop allt i ett förfarande skulle se ut så här:
123456789101112131415161718192021222324 | Sub FSOGetFolder ()Dim FSO som nytt filsystemsystemAnge FSO = CreateObject ("Scripting.FileSystemObject")Ställ in 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.TypeFör varje vikning i fld.SubFoldersDebug.Print fold.NameNästa vikningFör varje fil i fld.FilesDebug.Print fil.NameNästa filAvsluta Sub |
Observera att du ska trycka på Ctrl+G för att se resultatet av Debug.Print -kommandot i VBA: s omedelbara fönster.
GetParentFolderName -metod
Alternativt till ovanstående sätt kan du komma åt en mapps överordnade mapps namn med hjälp av denna kod:
1234 | Dim FSO som nytt filsystemsystemAnge FSO = CreateObject ("Scripting.FileSystemObject")ParentFold = FSO.GetParentFolderName ("C: \ ParentTest \ Test \") |
ParentFold kommer i detta fall att vara "C: \ ParentTest \".
Observera att den här metoden inte kommer att lösa sökvägen och inte heller kontrollera att den angivna sökvägen finns.
GetSpecialFolder -metod
Med GetSpecialFolder -metoden kan du genom att skicka 0, 1 eller 2 som ett argument få din Windows -mappsökväg (med filer installerade av Windows -operativsystemet), din systemmappsväg (med bibliotek, teckensnitt och enhetsdrivrutiner) och tillfälliga mappsökväg (mappen som används för att lagra tillfälliga filer).
1234567 | Sub FSOGetSpecialFolder ()Dim FSO som nytt filsystemsystemAnge FSO = CreateObject ("Scripting.FileSystemObject")Debug.Print FSO.GetSpecialFolder (0) ‘Resultatet kan vara: C: \ Windows \ System32Avsluta Sub |
GetFile -metod
Du kan använda GetFile -metoden på ett mycket liknande sätt som GetFolder -metoden. Efter att ha angett filen du vill komma åt
1 | Ange fil = FSO.GetFile ("C: \ Src \ Test.xlsx") |
du kan kopiera det:
1 | fil.Copy "C: \ Dst \" |
flytta den:
1 | fil.Move "C: \ Dst \" |
radera det:
1 | fil.Delete |
eller öppna det som ett TextStream -objekt:
1 | fil.OpenAsTextStream |
Filens egenskaper som dess attribut, datum och tid då den skapades, senast öppnades eller senast ändrades, dess enhets bokstav, namn och kortnamn, sökväg och kort sökväg, storlek, typ och dess överordnade mapp kan nås på samma sätt som beskrivs i GetFolder -metoden.