VBA FileSystemObject (FSO) | Com accedir a FileSystemObject?

Excel VBA FileSystemObject (FSO)

VBA FileSystemObject(FSO) funciona de manera similar a FileDialog, que s’utilitza per accedir a altres fitxers de l’ordinador en què treballem. També podem editar aquests fitxers per llegir o escriure el fitxer. Mitjançant FSO podem accedir a fitxers, treballar amb ells, modificar fitxers i carpetes. FSO és l'eina important de l'API a la qual podem accedir amb VBA. Com a part del projecte VBA, és possible que hàgim d’accedir a algunes carpetes i fitxers del nostre ordinador per fer la feina.

Podem fer moltes tasques mitjançant FSO, com ara "per comprovar si la carpeta està disponible o no", crear carpetes o fitxers nous, canviar el nom de la carpeta o fitxers existents, obtenir la llista de tots els fitxers de la carpeta i també els noms de les subcarpetes, i finalment, podem copiar fitxers d’una ubicació a una altra.

Fins i tot hi ha altres funcions disponibles per treballar amb carpetes i fitxers, FSO és el mètode més senzill per treballar amb carpetes i fitxers mantenint el codi VBA net i recte.

Podem accedir a 4 tipus d’objectes amb FileSystemObject. A continuació es mostren aquests.

  1. Conduir: Mitjançant aquest objecte podem comprovar si la unitat esmentada existeix o no, podem obtenir la ruta, el tipus de disc i la mida de la unitat.
  2. Carpeta: Aquest objecte ens permet comprovar si la carpeta en particular existeix o no. Podem crear, eliminar, modificar, copiar carpetes amb aquest objecte.
  3. Dossier: Aquest objecte ens permet comprovar si el fitxer en particular existeix o no. Podem crear, eliminar, modificar, copiar fitxers amb aquest objecte vba.
  4. Transmissió de text: Aquest objecte ens permet crear o llegir fitxers de text.

Tots els mètodes anteriors tenen el seu propi mètode per treballar. En funció del nostre requisit, podem triar el mètode de cada objecte.

Com s'activa FileSystemObject?

No és fàcilment accessible a VBA. Atès que accedir a fitxers i carpetes és la tasca externa d’Excel, hem d’habilitar FileSystemObject. Per activar, seguiu els passos següents.

Pas 1: aneu a Eines> Referències.

Pas 2: seleccioneu l'opció "Microsoft Scripting Runtime"

Desplaceu-vos cap avall i seleccioneu l'opció "Microsoft Scripting Runtime". Després de seleccionar les opcions, feu clic a D'acord.

Ara podem accedir a FileSystemObject (FSO) a vba.

Creeu una instància de FileSystemObject

Un cop l’opció ‘Microsoft Scripting Runtime’ estigui activada des de la biblioteca d’objectes, hem de crear la instància de File System Object (FSO) mitjançant la codificació.

Per crear la instància, primer declareu la variable com FileSystemObject.

Com podem veure FileSystemObject apareix a la llista IntelliSense de VBA. Això no estaria disponible abans que activéssim "Microsoft Scripting Runtime".

Com que FSO és un objecte, hem de configurar-lo per crear una nova instància.

Ara podem accedir a totes les opcions de FSO (FileSystemObject).

Exemples per utilitzar VBA FileSystemObject

Podeu descarregar aquesta plantilla VBA FileSystemObject Excel aquí: plantilla VBA FileSystemObject Excel

Exemple 1: trobeu l'espai total de la unitat

A sota del codi es proporcionarà l’espai total de la unitat.

Codi:

 Sub FSO_Example1 () Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject Dim DriveName As Drive Dim DriveSpace As Double Set DriveName = MyFirstFSO.GetDrive ("C:") 'Create new drive object DriveSpace = DriveName.FreeSpace' This will get the free space de la unitat "C" DriveSpace = DriveSpace / 1073741824 'Això convertirà l'espai lliure a GB DriveSpace = Round (DriveSpace, 2)' Round the total space MsgBox "Drive" & DriveName & "has" & DriveSpace & "GB" End Sub 

Desglossament del codi.

En primer lloc, vam crear una instància de FSO.

 Atenuar MyFirstFSO com a FileSystemObject Establir MyFirstFSO = Nou FileSystemObject

A continuació, hem declarat dues variables.

 Disminueix el nom de la unitat com a Drive Disminueix el DriveSpace com a doble 

Com que DriveName és una variable Object, hem d’establir-lo en un mètode FSO. Com que necessitem la característica de la unitat, hem utilitzat l'opció Get Drive i hem esmentat el nom de la unitat

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

Ara per a una altra DriveSpace variable, assignarem el mètode d'espai lliure de la unitat a la qual accedim.

DriveSpace = DriveName.FreeSpace

A partir d’ara, l’equació anterior pot obtenir espai lliure de la unitat “C”. Per tant, per mostrar el resultat en GB, hem dividit l’espai lliure per 1073741824

DriveSpace = DriveSpace / 1073741824

A continuació, arrodonirem el número.

DriveSpace = Round (DriveSpace, 2)

Finalment, mostreu el resultat a Quadre de missatges.

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

Quan executem el codi manualment o mitjançant la tecla de drecera F5, al quadre de missatges obtindrem l'espai lliure de la unitat "C".

Per tant, al meu ordinador la unitat C té 216,19 GB de memòria d’espai lliure.

Exemple 2: comproveu si la carpeta existeix o no

Per comprovar si la carpeta en particular existeix o no, utilitzeu el codi següent.

Si la carpeta esmentada està disponible, ens mostrarà el quadre de missatge com a "La carpeta esmentada està disponible", si no, mostrarà el quadre de missatge VBA com a "La carpeta esmentada no està disponible".

Codi:

 Sub FSO_Example2 () Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject If MyFirstFSO.FolderExists ("D: \ Excel Files \ VBA \ VBA Files") Aleshores MsgBox "La carpeta esmentada està disponible" La resta MsgBox "La carpeta esmentada no està Finalitza si finalitza Sub 

Executeu aquest codi mitjançant la tecla de drecera excel F5 o manualment i, a continuació, consulteu el resultat.

Exemple 3: comproveu si el fitxer existeix o no

A sota del codi es comprovarà si el fitxer esmentat està disponible o no.

Codi:

 Sub FSO_Example3 () Dim MyFirstFSO As FileSystemObject Set MyFirstFSO = New FileSystemObject If MyFirstFSO.FileExists ("D: \ Excel Files \ VBA \ VBA Files \ Testing File.xlsm") Aleshores MsgBox "El fitxer esmentat està disponible" Else MsgBox " El fitxer no està disponible "Finalitza si finalitza Sub 

Executeu aquest codi manualment o mitjançant la tecla F5 i, a continuació, consulteu el resultat.