Che cos’è FileSystemObject (FSO) e come usarlo in VBA Excel?

Fb-ButtonFb-Button

FileSystemObject viene utilizzato per lavorare con cartelle e file collegati al sistema. Possiamo usarlo per accedere a file, cartelle, unità e flussi di testo. Non solo può accedere a file, cartelle e file di testo, ma può anche creare. Queste operazioni non sono limitate al disco rigido del sistema, ma qualsiasi dispositivo collegato al file. Significa che è possibile accedere a pen drive, cd rom o unità di rete virtualmente collegate.

Queste sono le operazioni che possiamo fare usando FileSystemObject in VBA:

Per creare, aprire, leggere, scrivere ed eliminare file di testo.

Per aggiungere, modificare ed eliminare cartelle.

Per scorrere file e cartelle.

Per copiare e spostare file o cartelle in altri luoghi.

Per verificare se un file o una cartella esiste nella posizione o meno

Come accedere a FileSystemObject in VBA?

L’oggetto file system fa parte della libreria Runtime di Microsoft Scripting. Per accedere a un FileSystemObject è necessario connettersi o aggiungere un riferimento alla libreria di runtime di Microsoft Scripting o Scrrun.DLL.

Nota: FileSystemObject non supporta il funzionamento dei file binari perché Scrrun.dll supporta la creazione e la manipolazione di file utilizzando Oggetto TextStream.

Esistono due metodi per creare FileSystemObject in VBA:

1: Creazione di un oggetto FSO Utilizzando il metodo CreateObject:

Utilizzando questo metodo dichiariamo prima un tipo di oggetto variabile. Quindi impostare il riferimento dell’oggetto FSO a tale variabile utilizzando CreateObject:

Sub LearnFso() 'Creating the object variable Dim fso As Object 'Create the FileSystemObject using Create Object Method Set fso = CreateObject("Scripting.FileSystemObject") Debug.Print fso.GetBaseName("E:\MTR\Feb'18 MTR")End Sub

Questo metodo è dinamico e trasferibile. Significa che, se stai condividendo il codice con altri sistemi, questo codice funzionerà perfettamente. Non importa quale versione di Microsoft Runtime Scripting versione avete.

L’unico inconveniente è che non sarai in grado di vedere l’intellisense fornito da VBA. Dovrai dipendere dalle tue conoscenze per utilizzare tutte le proprietà e i metodi di FileSystemObject.

2: Creazione dell’oggetto FSO aggiungendo riferimento a Microsoft Runtime Scripting

È possibile creare direttamente un FileSystemObject in VBA utilizzando la nuova parola chiave. Per questo dovrai aggiungere un riferimento all’ultimo Runtime di scripting Microsoft nel tuo sistema.

Per aggiungere il riferimento, vai all’opzione riferimenti nel menu strumenti. Qui, trovare il Microsoft Scripting Runtime dll. Controllare e fare clic su OK.

Ora si è pronti per creare e utilizzare l’oggetto FSO.

Sub LearnFso() Dim fso as new FileSystemObject Debug.Print fso.GetBaseName("E:\MTR\Feb'18 MTR") End Sub

O

Sub LearnFso() Dim fso as FileSystemObject Set fso = New FileSystemObject Debug.Print fso.GetBaseName("E:\MTR\Feb'18 MTR") End Sub

Entrambi funzioneranno bene.

Uno dei principali vantaggi di questo metodo è che sarai in grado di vedere l’intelligenza di VBA. VBA vi mostrerà tutte le proprietà ei metodi di oggetto fso. Dirà anche che tipo di variabili accetterà e che tipo di valore restituirà.

Se si condivide questo codice ad altri sistemi, si dovrà dire loro di aggiungere riferimento al Runtime di Scripting da strumenti altrimenti otterranno un errore di compilazione che il tipo definito dall’utente non è definito. Quindi è come importare altri linguaggi di programmazione.

Si noti che FSO non è una parola chiave. Puoi usarlo come nome di variabile. È solo una convenzione nominare filesystemobject come fso. Ecco perché alcune persone confondono essendo una parola chiave.

Entrambi i metodi di creazione di oggetti FSO hanno i loro vantaggi e svantaggi che ho menzionato mentre li spiegavo. Quindi utilizzare secondo il vostro bisogno. In questo articolo, userò il secondo metodo per creare FileSystemObject.

Ora che sappiamo come creare un FileSystemObject in VBA, usiamo questa conoscenza nel fare alcune attività significative. Voglio dire, saltiamo agli esempi.

Esempio 1: Ottieni tutta la sottocartella in una cartella specificata

Il primo esempio che vedremo è di ottenere i nomi delle sottocartelle da una cartella specifica.

Sub LearnFso()' decaring variables that we will need Dim fso As FileSystemObject ' Variable for the FileSystemObject Dim fdr As Folder ' Variable for the base folder Dim subfdr As Folder ' Variable for the sub folders Dim fdrpath As String 'to store path of base folder 'Intializing the objects fdrpath = "D:\Downloads" 'Declaring the folder Set fso = New FileSystemObject 'Creating the fso object Set fdr = fso.GetFolder(fdrpath) 'Creating the folder object of given folder 'loop to get all the sub folders name in For Each subfdr In fdr.SubFolders Debug.Print subfdr.Name Next subfdrEnd Sub

Quando esegui il codice sopra questo è quello che ottieni.

Sì! Questa è la mia cartella di download. Non concentrarti su questo.

Come ha funzionato?

Capiamo nei passaggi:

1: Decaring variabili di cui avremo bisogno

Dim fso Come FileSystemObject ‘Variabile per il FileSystemObject

Dim fdr Come Cartella’ Variabile per la cartella di base

Dim subfdr Come Cartella ‘ Variabile per il sub cartelle

in Primo luogo, abbiamo dichiarato tutte le variabili che abbiamo bisogno in questo esempio. La prima variabile è ovviamente l’oggetto fso as file sytem. Le due variabili fdr e subfdr sono di tipo cartella. Useremo l’oggetto fso per creare un oggetto di tipo file invece di creare direttamente. La variabile fdrpath è use viene utilizzata per contenere il percorso della cartella di base di cui vogliamo ottenere tutte le sottocartelle.

2: Inizializzare gli oggetti

fdrpath = “D:\Downloads “‘Dichiarare la cartella

Set fso = New FileSystemObject’ Creare l’oggetto fso

Set fdr = fso.GetFolder (fdrpath) ‘ Creare l’oggetto cartella di data cartella

In questo passaggio abbiamo inizializzato tutti gli oggetti che avevamo dichiarato tranne subfdr. Si noti che abbiamo intializzato la variabile del file fdr utilizzando il metodo getFolder degli oggetti fso.

Il metodo GetFolder() di FileSystemObject prende il percorso di una cartella o directory come stringa e restituisce il tipo di file oggetto.

3: ciclo per ottenere tutti i nomi delle sottocartelle nell’oggetto cartella

Per ogni subfdr In fdr.Sottocartelle

Debug.Stampa subfdr.Name

Next subfdr

Qui abbiamo usato a per ogni ciclo per scorrere ogni sottocartella nell’oggetto file fdr. Abbiamo usato la proprietà sottocartelle dell’oggetto file in loop.

Usiamo la proprietà name per ottenere i nomi di ogni sottocartella. Ed è fatto.

Esempio 2: Ottenere tutti i percorsi di file in una cartella ed è sottocartelle

Per ottenere tutti i percorsi o nomi completi di tutti i file in una cartella ed è sottocartella, abbiamo bisogno di aggiungere un paio di righe in esempio 1 codice.

Sub LearnFso()Dim fso As FileSystemObjectDim fdr As Folder ' Variable for the base folderDim subfdr As Folder ' Variable for the sub foldersDim fdrpath As String 'to store path of base folderDim fl As File 'to store file objectfdrpath = "D:\downloads"Set fso = New FileSystemObjectSet fdr = fso.GetFolder(fdrpath)'loop to get all the sub folders name inFor Each subfdr In fdr.SubFolders For Each fl In subfdr.Files 'to loop throgh each file Debug.Print fl.Path 'getting file name Next flNext subfdr'to get the files of main folderFor Each fl In fdr.Files Debug.Print fl.PathNext flEnd Sub

La cartella.Metodo Files() è il metodo che restituisce i file in una sottocartella. file.Metodo Path () restituisce l’indirizzo completo del file.

Ognuno di noi ha un ciclo interno per scorrere tutti i file nella sottocartella della cartella principale e il suo.

Per ottenere i file della cartella principale usiamo un altro ciclo.

Esempio 3: Salvare i nomi dei file in un file CSV.

Nell’esempio precedente abbiamo imparato come stampare i percorsi dei file di cartelle specifiche sulla finestra immediata. In questo esempio, impareremo come salvare quei percorsi in un file CSV. Per fare ciò abbiamo solo bisogno di aggiungere alcune righe al codice. Vedi le righe di codice bolde qui sotto.

Sub LearnFso()Dim fso As FileSystemObjectDim fdr As Folder ' Variable for the base folderDim subfdr As Folder ' Variable for the sub foldersDim fdrpath As String 'to store path of base folderDim fl As File 'to store file objectDim fileList As TextStream 'A textstream objectfdrpath = "D:\downloads"Set fso = New FileSystemObjectSet fdr = fso.GetFolder(fdrpath)Set fileList = fso.CreateTextFile(fdrpath & "\File List in This Folder.csv", True, False)'loop to get all the sub folders name inFor Each subfdr In fdr.SubFolders For Each fl In subfdr.Files 'to loop through each file fileList.Write fl.Path & "," Next flNext subfdr'to get the files of main folderFor Each fl In fdr.Files fileList.Write fl.Path & ","Next fl fileList.CloseEnd Sub

Qui, abbiamo dichiarato un nuovo oggetto di tipo FileStream chiamato fileList

Abbiamo inizializzato la variabile filelist con un oggetto filestream usando la riga sottostante.

Imposta Elenco file = ust.CreateTextFile (fdrpath & ” \Elenco file in questa cartella.csv”, True, False)

Usiamo il metodo CreateTextFile di FSO per creare un oggetto FileStream. Crea un file di testo. Questo metodo accetta il nome di un file con un percorso completo. La prima variabile sta facendo così. Usiamo il .estensione csv per creare un file csv. La seconda variabile viene utilizzata per consentire la sovrascrittura. Il terzo argomento è False per dichiarare che non è un file binario.

Nei loop, sostituiamo il debug.stampa con filelist.Metodo Write per scrivere ogni percorso del file nel file creato.

Quindi sì ragazzi, questo è il modo in cui puoi usare FileSystemObject. L’UST può essere utilizzato per molte altre cose, che discuteremo nei prossimi articoli. Se avete dei dubbi su questo articolo di FSO query correlati, chiedetemi nella sezione commenti qui sotto.

Iniziare con Excel VBA UserForms / Spiegherò come creare un modulo in Excel, come utilizzare VBA toolbox, come gestire gli input dell’utente e infine come memorizzare gli input dell’utente. Passeremo attraverso questi argomenti utilizzando un esempio e guida passo passo.

Variabili VBA in Excel / VBA sta per Visual Basic per le applicazioni. È un linguaggio di programmazione di Microsoft. Viene utilizzato con applicazioni Microsoft Office come MSExcel, MS-Word e MS-Access, mentre le variabili VBA sono parole chiave specifiche.

Excel VBA Variable Scope / In tutti i linguaggi di programmazione, abbiamo specificatori di accesso variabile che definiscono da dove è possibile accedere a una variabile definita. Excel VBA non fa eccezione. Anche VBA ha specificatori di ambito.

Argomenti ByRef e ByVal / Quando un argomento viene passato come argomento ByRef a una sub o funzione diversa, viene inviato il riferimento della variabile effettiva. Tutte le modifiche apportate alla copia della variabile, rifletterà nell’argomento originale.

Elimina i fogli senza richieste di conferma usando VBA in Microsoft Excel / Poiché stai eliminando i fogli usando VBA, sai cosa stai facendo. Vorresti dire a Excel di non mostrare questo avviso ed eliminare il dannato foglio.

Aggiungere e salvare nuova cartella di lavoro Utilizzando VBA In Microsoft Excel 2016 / In questo codice, abbiamo creato un riferimento a un oggetto cartella di lavoro. E poi l’abbiamo inizializzato con un nuovo oggetto cartella di lavoro. Il vantaggio di questo approccio è che è possibile eseguire facilmente le operazioni su questa nuova cartella di lavoro.

Visualizza un messaggio sulla barra di stato di Excel VBA / La barra di stato in Excel può essere utilizzata come monitor del codice. Quando il codice VBA è lungo e si eseguono diverse attività utilizzando VBA, spesso si disattiva l’aggiornamento dello schermo in modo da non vedere lo sfarfallio dello schermo.

Disattiva i messaggi di avviso utilizzando VBA In Microsoft Excel 2016 / Questo codice non solo disabilita gli avvisi VBA, ma aumenta anche l’efficienza temporale del codice. Vediamo come.

Articoli popolari:

50 Excel scorciatoie per aumentare la produttività / Ottenere più velocemente al vostro compito. Queste scorciatoie 50 ti faranno lavorare ancora più velocemente su Excel.

La funzione VLOOKUP in Excel / Questa è una delle funzioni più utilizzate e popolari di Excel che viene utilizzata per cercare valori da diversi intervalli e fogli.

COUNTIF in Excel 2016 / Contare i valori con le condizioni che utilizzano questa funzione sorprendente. Non è necessario filtrare i dati per contare valori specifici. Funzione Countif è essenziale per preparare il vostro cruscotto.

Come utilizzare la funzione SUMIF in Excel / Questa è un’altra funzione essenziale del dashboard. Questo ti aiuta a riassumere i valori su condizioni specifiche.

Lascia un commento