VBA GetFolder & GetFile (Obtener Propiedades de Archivos y Carpetas)
In this Article
Este tutorial demostrará cómo utilizar los métodos GetFolder y GetFile del FileSystemObject.
Obtener Propiedades de Carpetas y Archivos con VBA FileSystemObject
El método GetFolder devuelve un objeto Folder correspondiente a la carpeta de una ruta especificada y permite acceder a sus propiedades. El método GetFile hace lo mismo con el archivo especificado.
Establecer la Referencia VBA
En primer lugar, al utilizar FileSystemObjects, es posible que tengas que establecer una referencia a la biblioteca de tiempo de ejecución de scripts VB: abre el Editor de Visual Basic(ALT+F11), selecciona Herramientas > Referencias en el menú desplegable y marca la casilla de ‘Microsoft Scripting Runtime’.
FileSystemObject
En segundo lugar, debes crear el FileSystemObject:
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
Ahora tienes acceso a GetFolder, y a los otros métodos de FileSystemObject.
Uso del Método GetFolder
Después de especificar la carpeta a la que quieres acceder
Set fld = FSO.GetFolder("C:\Src\")
puedes copiar la carpeta:
fld.Copy "C:\NuevaCarpeta\"
mover la carpeta:
fld.Move "C:\NuevaCarpeta\"
fld.Delete
o crear un nuevo archivo de texto en la carpeta:
fld.CreateTextFile "NuevoArchivodeTexto.txt"
Usando este método, se obtiene acceso a las propiedades de la carpeta como sus atributos (fld.Attributes), la fecha y hora de creación (fld.DateCreated), el último acceso (fld.DateLastAccessed), la última modificación (fld.DateLastModified), la letra de su unidad (fld.Drive), su nombre y nombre corto (fld.Name, fld.ShortName), su ruta y ruta corta (fld.Path, fld.ShortPath), su tamaño (fld.Size), su tipo (fld.Type), su carpeta padre (fld.ParentFolder), comprobar si es una carpeta raíz (fld.IsRootFolder) o puede recorrer, contar, etc. sus archivos (fld.Files) o subcarpetas (fld.SubFolders).
Poniendo todo esto junto en un procedimiento se vería así:
Sub FSOGetFolder()
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
Set fld = FSO.GetFolder("C:\Src\")
Debug.Print fld.DateCreated
Debug.Print fld.Drive
Debug.Print fld.Name
Debug.Print fld.ParentFolder
Debug.Print fld.Path
Debug.Print fld.ShortPath
Debug.Print fld.Size
Debug.Print fld.Files.Count
Debug.Print fld.Type
For Each fold In fld.SubFolders
Debug.Print fold.Name
Next fold
For Each fil In fld.Files
Debug.Print fil.Name
Next fil
End Sub
Tenga en cuenta que puede pulsar Ctrl + G para ver el resultado de Debug.Print en la ventana inmediata de VBA.
Método GetParentFolderName
Como alternativa a la forma mencionada anteriormente, puede acceder al nombre de la carpeta padre de una carpeta utilizando este código:
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
ParentFold= FSO.GetParentFolderName("C:\ParentTest\Test\")
ParentFold será en este caso «C:\ParentTest\».
Tenga en cuenta que este método no resolverá la ruta, ni comprueba la existencia de la ruta especificada.
Método GetSpecialFolder
Con el método GetSpecialFolder, pasando 0, 1 o 2 como argumento, puede obtener la ruta de la carpeta de Windows (con los archivos instalados por el sistema operativo Windows), la ruta de la carpeta del sistema (con las bibliotecas, las fuentes y los controladores de dispositivos) y la ruta de la carpeta temporal (la carpeta que se utiliza para almacenar archivos temporales), respectivamente.
Sub FSOGetSpecialFolder()
Dim FSO As New FileSystemObject
Set FSO = CreateObject("Scripting.FileSystemObject")
Debug.Print FSO.GetSpecialFolder(0) 'El resultado puede ser: C:\Windows\System32
End Sub
Método GetFile
Puede utilizar el método GetFile de forma muy similar al método GetFolder. Después de especificar el archivo al que desea acceder
Set fil = FSO.GetFile("C:\Src\Test.xlsx")
puede copiar el archivo:
fil.Copy "C:\Dst\"
fil.Move "C:\Dst\"
fil.Delete
o abrirlo como un objeto TextStream:
fil.OpenAsTextStream
Se puede acceder a las propiedades del archivo, como sus atributos, la fecha y hora de creación, de último acceso o de última modificación, la letra de su unidad, el nombre y el nombre corto, la ruta y la ruta corta, el tamaño, el tipo y su carpeta padre, de la misma manera que se describe en el método GetFolder.