Ce este FileSystemObject (FSO) și cum se folosește în VBA Excel?

Cuprins:

Anonim

FileSystemObject este utilizat pentru a lucra cu foldere și fișiere conectate la sistem. Îl putem folosi pentru a accesa fișiere, foldere, unități și fluxuri de text. Nu numai că poate accesa fișiere, foldere și fișiere text, dar poate crea și. Aceste operațiuni nu se limitează la hard disk-ul sistemului, ci la orice dispozitiv conectat la fișier. Înseamnă că puteți accesa pen drive-uri, CD-uri sau unități de rețea conectate practic.

Acestea sunt operațiunile pe care le putem face folosind FileSystemObject în VBA:

Pentru crearea, deschiderea, citirea, scrierea și ștergerea fișierelor text.

Pentru adăugarea, modificarea și ștergerea dosarelor.

Pentru a itera prin fișiere și foldere.

Pentru copierea și mutarea fișierelor sau folderelor în alte locuri.

Pentru verificarea dacă există sau nu un fișier sau folder

Cum se accesează FileSystemObject în VBA?

Obiectul sistemului de fișiere este o parte a bibliotecii Microsoft Scripting Runtime. Pentru a accesa un FileSystemObject trebuie să ne conectăm sau să adăugăm o referință la Microsoft Scripting Runtime Library sau Scrrun.dll.

Notă: FileSystemObject nu acceptă funcționarea fișierelor binare, deoarece Scrrun.dll acceptă crearea și manipularea fișierelor folosind obiectul TextStream.

Există două metode pentru crearea FileSystemObject în VBA:

1: Crearea obiectului FSO Utilizând metoda CreateObject:

Folosind această metodă declarăm mai întâi un tip de obiect variabil. Apoi setați referința obiectului FSO la acea variabilă folosind CreateObject:

Sub LearnFso () 'Crearea variabilei obiect Dim fso Ca obiect' Creați FileSystemObject folosind Create Object Method Set fso = CreateObject ("Scripting.FileSystemObject") Debug.Print fso.GetBaseName ("E: \ MTR \ Feb'18 MTR" ) Sfârșitul Sub 

Această metodă este dinamică și transferabilă. Înseamnă că, dacă distribuiți codul către alte sisteme, acest cod va funcționa perfect. Nu va conta ce versiune de versiune Microsoft Runtime Scripting aveți.

Singurul dezavantaj este că nu veți putea vedea inteligența oferită de VBA. Va trebui să depindeți de cunoștințele dvs. pentru a utiliza toate proprietățile și metodele FileSystemObject.

2: Crearea obiectului FSO prin adăugarea de referință la scripturile Microsoft Runtime

Puteți crea direct un FileSystemObject în VBA folosind noul cuvânt cheie. Pentru aceasta va trebui să adăugați o referință la cel mai recent Microsoft Scripting Runtime din sistemul dvs.

Pentru a adăuga referința, accesați opțiunea referințe din meniul Instrumente. Aici, găsiți Microsoft Scripting Runtime dll. Verificați-l și faceți clic pe OK.

Acum sunteți gata să creați și să utilizați obiectul FSO.

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

Sau

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

Ambele vor funcționa bine.

Un avantaj major al acestei metode este că veți putea vedea inteligența VBA. VBA vă va arăta toate proprietățile și metodele obiectului fso. De asemenea, va spune ce fel de variabile va accepta și ce fel de valoare va reveni.

Dacă partajați acest cod altor sisteme, va trebui să le spuneți să adauge referințe la Scripting Runtime din instrumente, altfel vor primi o eroare de compilare că tipul definit de utilizator nu este definit. Deci, este ca și cum ai importa alte limbaje de programare.

Rețineți că FSO nu este un cuvânt cheie. Îl puteți folosi ca nume de variabilă. Este doar o convenție de a numi filesystemobject ca fso. De aceea, unii oameni confundă faptul că este un cuvânt cheie.

Ambele metode de creare a obiectelor FSO au avantajele și dezavantajele pe care le-am menționat în timp ce le explic. Așadar, utilizați-o conform nevoilor dvs. În acest articol, voi folosi a doua metodă de creare a FileSystemObject.

Acum, că știm cum să creăm un FileSystemObject în VBA, să folosim aceste cunoștințe pentru a face unele sarcini semnificative. Adică să trecem la exemple.

Exemplul 1: Obțineți tot subfolderul într-un folder specificat

Primul exemplu pe care îl vom vedea este acela de a obține numele subdosarelor dintr-un folder specific.

Sub LearnFso () 'variabile decaring de care vom avea nevoie Dim fso Ca FileSystemObject' Variabilă pentru FileSystemObject Dim fdr ca folder 'Variabilă pentru folderul de bază Dim subfdr ca folder' Variabilă pentru subdosarele Dim fdrpath As String 'pentru a stoca calea bazei folder 'Intializarea obiectelor fdrpath = "D: \ Downloads"' Declararea folderului Set fso = New FileSystemObject 'Crearea obiectului fso Set fdr = fso.GetFolder (fdrpath)' Crearea obiectului folder al folderului dat 'bucla pentru a obține toate numele subdosarelor din Pentru fiecare subfdr din fdr.SubFolders Debug.Print subfdr.Name Următorul subfdr End Sub 

Când rulați codul de mai sus, veți obține acest lucru.

Da! Acesta este folderul meu de descărcare. Nu te concentra pe asta.

Cum a funcționat?

Să înțelegem în pași:

1: Variabile de care vom avea nevoie

Dim fso As FileSystemObject 'Variabilă pentru FileSystemObject

Dim fdr ca folder 'Variabilă pentru folderul de bază

Dim subfdr As Folder 'Variable for the sub folders

Mai întâi am declarat toată variabila de care vom avea nevoie în acest exemplu. Prima variabilă este desigur fso ca obiect sytem de fișier. Cele două variabile fdr și subfdr sunt de tip folder. Vom folosi obiectul fso pentru a crea un obiect de tip fișier în loc să creăm direct. The fdrpath Variabila este utilizată este utilizată pentru a ține calea folderului de bază din care dorim să obținem toate subdosarele.

2: Intializarea obiectelor

fdrpath = "D: \ Downloads" 'Declararea dosarului

Setați fso = New FileSystemObject 'Crearea obiectului fso

Setați fdr = fso.GetFolder (fdrpath) 'Crearea obiectului folder al folderului dat

În acest pas am inițializat toate obiectele pe care le declarasem cu excepția subfdr. Rețineți că am inițializat variabila fișierului fdr folosind metoda obiectelor fso getFolder.

Metoda GetFolder () a FileSystemObject ia calea unui folder sau director ca șir și returnează obiectul de tip fișier.

3: bucla pentru a obține numele tuturor subdosarelor din obiectul folder

Pentru fiecare subfdr In fdr.SubFolders

Debug.Print subfdr.Name

Următorul subfdr

Aici am folosit un pentru fiecare buclă pentru a parcurge fiecare subfolder din obiectul fișierului fdr. Am folosit proprietatea SubFoldere a obiectului fișier pentru a bucla.

Folosim proprietatea name pentru a obține numele fiecărui subfolder. Și s-a făcut.

Exemplul 2: Obțineți toate căile de fișiere într-un folder și subdirectoarele sale

Pentru a obține toate căile sau numele complet calificate ale tuturor fișierelor dintr-un folder și subdosarul acestuia, trebuie să adăugăm câteva linii în codul de exemplu 1.

Sub LearnFso () Dim fso As 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 Dim fl As File' to store file object fdrpath = "D: \ downloads" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) 'loop pentru a obține numele tuturor subdosarelor în Pentru fiecare subfdr din fdr.SubFolders Pentru fiecare fl In subfdr.Files' pentru a bucla fiecare fișier Debug.Print fl.Path 'obținerea numelui fișierului Next fl Next subfdr' pentru a obține fișierele din folderul principal Pentru fiecare fl In fdr.Files Fișiere Debug.Print fl.Path Next fl End Sub 

Metoda Folder.Files () este metoda care returnează fișierele dintr-un subfolder. Metoda File.Path () returnează adresa completă a fișierului.

Fiecare dintre noi are o buclă interioară pentru a itera prin toate fișierele din subfolderul folderului principal și al acestuia.

Pentru a obține fișierele din folderul principal folosim o altă buclă.

Exemplul 3: Salvați numele fișierelor într-un fișier CSV.

În exemplul anterior am învățat cum să tipărim căile de fișiere ale anumitor foldere din fereastra imediată. În acest exemplu, vom învăța cum să salvăm acele căi într-un fișier CSV. Pentru a face acest lucru, trebuie doar să adăugăm câteva linii la cod. Consultați liniile de cod bolde de mai jos.

Sub LearnFso () Dim fso As 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 Dim fl As File' to store file object Dim fileList As TextStream 'A textstream object fdrpath = "D: \ downloads" Set fso = New FileSystemObject Set fdr = fso.GetFolder (fdrpath) Set fileList = fso.CreateTextFile (fdrpath & "\ File List in This Folder.csv", True, False) 'buclă pentru a obține numele tuturor subdosarelor în Pentru fiecare subfdr din fdr.SubFoldere pentru fiecare fl În subfdr.File' pentru a parcurge fiecare fișier fișier Listă. Scrie fl.Path & "," Următorul fl Următorul subfdr 'pentru a obține fișiere ale folderului principal Pentru fiecare fl In fdr.Files fileList.Write fl.Path & "," Next fl fileList.Close End Sub 

Aici, am declarat un nou obiect de tip FileStream numit fileList

Am inițializat variabila filelist cu un obiect filestream folosind linia de mai jos.

Setați fileList = fso.CreateTextFile (fdrpath & "\ File List in This Folder.csv", True, False)

Folosim metoda CreateTextFile a FSO pentru a crea un obiect FileStream. Se creează un fișier text. Această metodă acceptă numele unui fișier cu o cale completă. Prima variabilă o face. Folosim extensia .csv pentru a crea un fișier CSV. A doua variabilă este utilizată pentru a permite suprascrierea. Al treilea argument este fals pentru a declara că nu este un fișier binar.

În bucle, înlocuim metoda debug.print cu metoda filelist.Write pentru a scrie fiecare cale a fișierului în fișierul creat.

Deci, băieți, așa puteți folosi FileSystemObject. FSO poate fi folosit pentru multe alte lucruri, pe care le vom discuta în articolele viitoare. Dacă aveți îndoieli cu privire la acest articol de interogare legată de FSO, întrebați-mă în secțiunea de comentarii de mai jos.

Noțiuni introductive despre Excel VBA UserForms| Voi explica cum să creați un formular în Excel, cum să utilizați setul de instrumente VBA, cum să gestionați intrările utilizatorului și, în cele din urmă, cum să stocați intrările utilizatorului. Vom trece prin aceste subiecte folosind un exemplu și un ghid pas cu pas.

Variabile VBA în Excel| VBA înseamnă Visual Basic pentru aplicații. Este un limbaj de programare de la Microsoft. Este utilizat cu aplicații Microsoft Office, cum ar fi MSExcel, MS-Word și MS-Access, în timp ce variabilele VBA sunt cuvinte cheie specifice.

Domeniul de aplicare variabil VBA Excel| În toate limbajele de programare, avem specificatori de acces variabil care definesc de unde poate fi accesată o variabilă definită. Excel VBA nu este o excepție. Și VBA are specificatori de domeniu.

Argumente ByRef și ByVal | Când un argument este transmis ca argument ByRef către un sub sau funcție diferit, este trimisă referința variabilei reale. Orice modificare adusă copiei variabilei se va reflecta în argumentul original.

Ștergeți foile fără solicitări de confirmare folosind VBA în Microsoft Excel | Deoarece ștergeți foi folosind VBA, știți ce faceți. Ați dori să spuneți Excel să nu afișeze acest avertisment și să șteargă afurisita de foaie.

Adăugați și salvați un registru de lucru nou folosind VBA în Microsoft Excel 2016| În acest cod, am creat mai întâi o referință la un obiect de registru de lucru. Și apoi l-am inițializat cu un nou obiect de registru de lucru. Avantajul acestei abordări este că puteți face operațiuni cu ușurință pe acest nou registru de lucru. Cum ar fi salvarea, închiderea, ștergerea etc.

Afișați un mesaj pe bara de stare Excel VBA| Bara de stare în excel poate fi utilizată ca monitor de cod. Când codul dvs. VBA este lung și faceți mai multe sarcini folosind VBA, dezactivați adesea actualizarea ecranului, astfel încât să nu vedeți ecranul care pâlpâie.

Dezactivați mesajele de avertizare folosind VBA în Microsoft Excel 2016| Acest cod nu numai că dezactivează alertele VBA, ci și crește eficiența în timp a codului. Să vedem cum.

Articole populare:

50 de comenzi rapide Excel pentru a vă crește productivitatea | Deveniți mai rapid la sarcina dvs. Aceste 50 de comenzi rapide vă vor face să lucrați și mai rapid pe Excel.

Funcția VLOOKUP în Excel | Aceasta este una dintre cele mai utilizate și populare funcții ale Excel, care este utilizată pentru a căuta valoarea din diferite intervale și foi.

COUNTIF în Excel 2016 | Numărați valorile cu condiții folosind această funcție uimitoare. Nu trebuie să vă filtrați datele pentru a număra anumite valori. Funcția Countif este esențială pentru a vă pregăti tabloul de bord.

Cum se utilizează funcția SUMIF în Excel | Aceasta este o altă funcție esențială a tabloului de bord. Acest lucru vă ajută să rezumați valori în condiții specifice.