VBA FileSystemObject (FSO)

Excel VBA FileSystemObject (FSO)

VBA FileSystemObject (FSO) funciona de manera similar a FileDialog, que se utiliza para obtener acceso a otros archivos de la computadora en la que estamos trabajando. También podemos editar estos archivos significa leer o escribir el archivo. Usando FSO podemos acceder a archivos, trabajar con ellos, modificar archivos y carpetas. FSO es la herramienta API importante a la que podemos acceder con VBA. Como parte del proyecto VBA, es posible que necesitemos acceder a algunas carpetas y archivos en nuestra computadora para hacer el trabajo.

Podemos hacer muchas tareas usando FSO como "para verificar si la carpeta está disponible o no", crear una nueva carpeta o archivos, cambiar el nombre de la carpeta o los archivos existentes, obtener la lista de todos los archivos en la carpeta y también los nombres de las subcarpetas, y finalmente, podemos copiar archivos de una ubicación a otra.

Incluso hay otras funciones disponibles para trabajar con carpetas y archivos, FSO es el método más fácil para trabajar con carpetas y archivos manteniendo el código VBA limpio y ordenado.

Podemos acceder a 4 tipos de Objetos con FileSystemObject. A continuación se muestran esos.

  1. Unidad: Con este objeto podemos verificar si la unidad mencionada existe o no, podemos obtener el nombre de la ruta, el tipo de unidad y el tamaño de la unidad.
  2. Carpeta: Este objeto nos permite comprobar si la carpeta en particular existe o no. Podemos crear, eliminar, modificar, copiar carpetas usando este objeto.
  3. Archivo: este objeto nos permite comprobar si el archivo en particular existe o no. Podemos crear, eliminar, modificar, copiar archivos usando este objeto vba.
  4. Flujo de texto: este objeto nos permite crear o leer archivos de texto.

Todos los métodos anteriores tienen su propio método para trabajar. Según nuestro requisito, podemos elegir el método de cada objeto.

¿Cómo habilitar FileSystemObject?

No es de fácil acceso en VBA. Dado que acceder a archivos y carpetas es una tarea externa de Excel, necesitamos habilitar FileSystemObject. Para habilitar, siga los pasos a continuación.

Paso # 1: Vaya a Herramientas> Referencias.

Paso # 2: seleccione la opción 'Microsoft Scripting Runtime'

Desplácese hacia abajo y seleccione la opción 'Microsoft Scripting Runtime'. Después de seleccionar las opciones, haga clic en Aceptar.

Ahora podemos acceder al FileSystemObject (FSO) en vba.

Crear una instancia de FileSystemObject

Una vez que la opción 'Microsoft Scripting Runtime' está habilitada desde la biblioteca de objetos, necesitamos crear la instancia del objeto del sistema de archivos (FSO) mediante la codificación.

Para crear la instancia, primero declare la variable como FileSystemObject.

Como podemos ver, FileSystemObject aparece en la lista IntelliSense en VBA. Esto no estaría disponible antes de que habilitemos el 'Microsoft Scripting Runtime'.

Dado que FSO es un objeto, debemos configurarlo para crear una nueva instancia.

Ahora podemos acceder a todas las opciones de FSO (FileSystemObject).

Ejemplos para usar VBA FileSystemObject

Puede descargar esta plantilla de Excel de VBA FileSystemObject aquí - Plantilla de Excel de VBA FileSystemObject

Ejemplo n. ° 1 - Encuentre el espacio total en disco

El siguiente código dará el espacio total de la unidad.

Código:

 Sub FSO_Example1 () Dim MyFirstFSO como FileSystemObject Set MyFirstFSO = New FileSystemObject Dim DriveName como Drive Dim DriveSpace como Double Set DriveName = MyFirstFSO.GetDrive ("C:") 'Create new drive object DriveSpace = DriveName.FreeSpace' Esto obtendrá el espacio libre de la unidad "C" DriveSpace = DriveSpace / 1073741824 'Esto convertirá el espacio libre en GB DriveSpace = Round (DriveSpace, 2)' Redondea el espacio total MsgBox "Drive" & DriveName & "has" & DriveSpace & "GB" End Sub 

Desglose del código.

Primero, creamos una instancia de FSO.

 Atenuar MyFirstFSO como FileSystemObject Establecer MyFirstFSO = New FileSystemObject

A continuación, hemos declarado dos variables.

 Atenuar DriveName como unidad Atenuar DriveSpace como doble 

Dado que DriveName es una variable de objeto, debemos establecer esto en FSO, uno de los métodos FSO. Como necesitamos la característica de la unidad, hemos usado la opción Obtener unidad y mencionamos el nombre de la unidad

 Establecer DriveName = MyFirstFSO.GetDrive ("C:")

Ahora, para otra variable DriveSpace, asignaremos el método de espacio libre de la unidad a la que estamos accediendo.

DriveSpace = DriveName.FreeSpace

A partir de ahora, la ecuación anterior nos puede dar espacio libre en la unidad "C". Entonces, para mostrar el resultado en GB, hemos dividido el espacio libre por 1073741824

DriveSpace = DriveSpace / 1073741824

A continuación, redondearemos el número.

DriveSpace = Redondo (DriveSpace, 2)

Finalmente, muestre el resultado en el cuadro de mensaje.

MsgBox "Drive" & DriveName & "has" & DriveSpace & "GB"

Cuando ejecutamos el código manualmente o mediante la tecla de método abreviado F5, en el cuadro de mensaje obtendremos el espacio libre de la unidad “C”.

Entonces, en mi computadora, la Unidad C tiene 216.19 GB de memoria de espacio libre.

Ejemplo n. ° 2: comprobar si la carpeta existe o no

Para verificar si la carpeta en particular existe o no, use el siguiente código.

Si la carpeta mencionada está disponible, nos mostrará el cuadro de mensaje como "La carpeta mencionada está disponible" , si no, mostrará el cuadro de mensaje de VBA como "La carpeta mencionada no está disponible".

Código:

 Sub FSO_Example2 () Dim MyFirstFSO como FileSystemObject Establecer MyFirstFSO = New FileSystemObject If MyFirstFSO.FolderExists ("D: \ Excel Files \ VBA \ VBA Files") Then MsgBox "La carpeta mencionada está disponible" Else MsgBox no está disponible "La carpeta mencionada no está disponible End If End Sub 

Ejecute este código a través de la tecla de acceso directo de Excel F5 o manualmente, luego vea el resultado.

Ejemplo n. ° 3: comprobar si el archivo existe o no

El siguiente código comprobará si el archivo mencionado está disponible o no.

Código:

 Sub FSO_Example3 () Dim MyFirstFSO como FileSystemObject Establecer MyFirstFSO = New FileSystemObject If MyFirstFSO.FileExists ("D: \ Excel Files \ VBA \ VBA Files \ Testing File.xlsm") Entonces MsgBox "El archivo mencionado está disponible" Else MsgBox "El archivo mencionado está disponible". El archivo no está disponible "End If End Sub 

Ejecute este código manualmente o usando la tecla F5, luego vea el resultado.