Co To jest FileSystemObject (FSO) i jak go używać w VBA Excel?

przycisk Fb

obiekt FileSystemObject służy do pracy z folderami i plikami połączonymi z systemem. Możemy go używać do uzyskiwania dostępu do plików, folderów, dysków i strumieni tekstowych. Może nie tylko uzyskać dostęp do plików, folderów i plików tekstowych, ale także tworzyć. Operacje te nie są ograniczone do dysku twardego systemu, ale dowolnego urządzenia podłączonego do pliku. Oznacza to, że można uzyskać dostęp do pendrive 'ów, cd ROM’ ów lub wirtualnie podłączonych dysków sieciowych.

oto operacje, które możemy wykonać za pomocą FileSystemObject w VBA:

do tworzenia, otwierania, odczytu, zapisu i usuwania plików tekstowych.

do dodawania, zmiany i usuwania folderów.

do iteracji poprzez pliki i foldery.

do kopiowania i przenoszenia plików lub folderów w inne miejsca.

do sprawdzania, czy plik lub folder istnieje w lokalizacji, czy nie

Jak uzyskać dostęp do FileSystemObject w VBA?

obiekt system plików jest częścią Microsoft Scripting Runtime Library. Aby uzyskać dostęp do obiektu FileSystemObject, musimy połączyć się lub dodać odniesienie do Microsoft Scripting Runtime Library lub Scrrun.dll.

Uwaga: FileSystemObject nie obsługuje operacji na plikach binarnych, ponieważ Scrun.dll obsługuje tworzenie i manipulowanie plikami za pomocą obiektu TextStream.

w VBA są dwie metody do wytworzenia FileSystemObject:

1: wytworzenie obiektu FSO przy pomocy metody CreateObject:

przy pomocy tej metody najpierw deklarujemy typ obiektu zmiennej. Następnie Ustaw odniesienie obiektu FSO do tej zmiennej za pomocą 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

ta metoda jest dynamiczna i zbywalna. Oznacza to, że jeśli udostępniasz kod innym systemom, ten kod będzie działał idealnie. Nie ma znaczenia, jaką masz wersję Microsoft Runtime Scripting.

jedyną wadą jest to, że nie będziesz w stanie zobaczyć intellisense dostarczanego przez VBA. Będziesz musiał polegać na swojej wiedzy, aby korzystać ze wszystkich właściwości i metod FileSystemObject.

2: Tworzenie obiektu FSO poprzez dodanie referencji do Microsoft Runtime Scripting

można bezpośrednio utworzyć obiekt FileSystemObject w VBA za pomocą słowa kluczowego new. W tym celu należy dodać odniesienie do najnowszego środowiska Microsoft Scripting Runtime w systemie.

aby dodać odniesienie, przejdź do opcji referencje w menu Narzędzia. Tutaj znajdziesz Microsoft Scripting Runtime dll. Sprawdź i kliknij OK.

teraz jesteś gotowy do utworzenia i użycia obiektu FSO.

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

lub

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

oba będą działać dobrze.

główną zaletą tej metody jest to, że będziesz w stanie zobaczyć inteligencję VBA. VBA pokaże Ci wszystkie właściwości i metody obiektu fso. Powie również, jakie zmienne przyjmie i jaką wartość zwróci.

jeśli udostępnisz ten kod innym systemom, będziesz musiał powiedzieć im, aby dodali odniesienie do skryptowego środowiska wykonawczego z narzędzi, w przeciwnym razie otrzymają błąd kompilacji, że typ zdefiniowany przez użytkownika nie jest zdefiniowany. To jest jak importowanie innych języków programowania.

zauważ, że FSO nie jest słowem kluczowym. Można go używać jako nazwy zmiennej. Jest to tylko konwencja nazwania filesystemobject jako fso. Dlatego niektórzy mylą to słowo kluczowe.

obie metody tworzenia obiektów FSO mają swoje zalety i wady, o których wspomniałem wyjaśniając je. Więc używaj zgodnie z potrzebami. W tym artykule użyję drugiej metody tworzenia FileSystemObject.

teraz, gdy wiemy, jak utworzyć obiekt FileSystemObject w VBA, wykorzystajmy tę wiedzę w wykonywaniu znaczących zadań. Przejdźmy do przykładów.

przykład 1: Pobierz cały podfolder w określonym folderze

pierwszy przykład, który zobaczymy, to uzyskanie nazw podfolderów z określonego folderu.

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

Po uruchomieniu powyższego kodu otrzymasz to, co otrzymasz.

To mój folder pobierania. Nie koncentruj się na tym.

Jak to działało?

zrozummy krok po kroku:

1: Decaring zmienne, które będziemy potrzebować

Dim fso jako FileSystemObject 'zmienna dla FileSystemObject

Dim fdr jako Folder’ zmienna dla folderu podstawowego

Dim subfdr jako Folder ’ zmienna dla podfolderów

najpierw zadeklarowaliśmy wszystkie zmienne, które będziemy potrzebować w tym przykładzie. Pierwszą zmienną jest oczywiście obiekt FSO as file sytem. Dwie zmienne FDR i subfdr są typu folder. Użyjemy obiektu fso do utworzenia obiektu typu pliku zamiast tworzenia bezpośrednio. Zmienna fdrpath is use służy do przechowywania ścieżki folderu bazowego, którego chcemy uzyskać wszystkie podfoldery.

2: Intializowanie obiektów

fdrpath = „D:\Downloads „’ deklarowanie katalogu

Set FSO = New FileSystemObject 'wytworzenie obiektu fso

Set FDR = fso.GetFolder (fdrpath) ’ Tworzenie obiektu folderu podanego folderu

w tym kroku zainicjalizowaliśmy wszystkie zadeklarowane przez nas obiekty oprócz subfdr. Zauważ, że wprowadziliśmy zmienną pliku fdr za pomocą metody getFolder obiektów FSO.

metoda GetFolder() FileSystemObject przyjmuje ścieżkę do folderu lub katalogu jako string i zwraca obiekt typu pliku.

3: pętla, aby uzyskać wszystkie nazwy podfolderów w obiekcie folderu

dla każdego subfdr w fdr.Podfoldery

Debug.Drukuj subfdr.Name

następny subfdr

tutaj użyliśmy for each loop do pętli przez każdy podfolder w obiekcie pliku fdr. Użyliśmy właściwości SubFolders obiektu file do zapętlenia.

używamy właściwości name, aby uzyskać nazwy każdego podfolderu. I stało się.

przykład 2: Pobierz wszystkie ścieżki plików w folderze i jego podfolderach

aby uzyskać wszystkie ścieżki lub w pełni kwalifikowane nazwy wszystkich plików w folderze i jego podfolderze, musimy dodać kilka dodatkowych linii w kodzie przykładu 1.

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

folder.Metoda Files () jest metodą, która zwraca pliki w podfolderze. Akta.Metoda Path () zwraca Pełny Adres pliku.

każdy z nas ma wewnętrzną pętlę do iteracji przez wszystkie pliki w podfolderze głównego folderu i jego.

aby pobrać pliki głównego folderu używamy innej pętli.

przykład 3: Zapisz nazwy plików w pliku CSV.

w poprzednim przykładzie nauczyliśmy się drukować ścieżki plików określonych folderów w oknie natychmiastowym. W tym przykładzie dowiemy się, jak zapisać te ścieżki w pliku CSV. Aby to zrobić, wystarczy dodać kilka linii do kodu. Zobacz linie kodu bolde poniżej.

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

tutaj zadeklarowaliśmy nowy obiekt typu FileStream o nazwie fileList

zainicjowaliśmy zmienną filelist obiektem filestream używając poniższej linii.

Set fileList = fso.CreateTextFile (fdrpath & ” \ Lista plików w tym folderze.csv”, True, False)

do utworzenia obiektu FileStream używamy metody CreateTextFile FSO. Tworzy plik tekstowy. Ta metoda akceptuje nazwę pliku z kompletną ścieżką. Pierwsza zmienna tak robi. Używamy .rozszerzenie csv do tworzenia pliku csv. Druga zmienna jest używana do nadpisywania. Trzeci argument to False, aby zadeklarować, że nie jest to plik binarny.

w pętlach wymieniamy debugowanie.Drukuj za pomocą listy plików.Write metoda zapisu każdej ścieżki do pliku w utworzonym pliku.

więc tak chłopaki, tak można używać FileSystemObject. FSO może być wykorzystywane do wielu innych rzeczy, które omówimy w nadchodzących artykułach. Jeśli masz jakiekolwiek wątpliwości co do tego artykułu FSO związanego z zapytaniem, Zapytaj mnie w komentarzu poniżej.

Wprowadzenie do programu Excel VBA UserForms / wyjaśnię, jak utworzyć formularz w programie excel, Jak korzystać z programu VBA toolbox, jak obsługiwać dane wejściowe użytkownika i wreszcie, jak przechowywać dane wejściowe użytkownika. Omówimy te tematy, korzystając z jednego przykładu i przewodnika krok po kroku.

zmienne VBA w programie Excel| VBA oznacza Visual Basic for Applications. Jest to język programowania firmy Microsoft. Jest używany z aplikacjami Microsoft Office, takimi jak MSExcel, MS-Word I MS-Access, podczas gdy zmienne VBA są specyficznymi słowami kluczowymi.

Excel VBA Vable Scope / we wszystkich językach programowania mamy specyfikatory dostępu do zmiennych, które określają, skąd można uzyskać dostęp do zdefiniowanej zmiennej. Excel VBA nie jest wyjątkiem. VBA również ma specyfikację zakresu.

argumenty ByRef i ByVal / gdy argument jest przekazywany jako argument ByRef do innego Pod-lub funkcji, wysyłane jest odniesienie do rzeczywistej zmiennej. Wszelkie zmiany wprowadzone w kopii zmiennej będą odzwierciedlane w oryginalnym argumencie.

Usuń arkusze bez monitów o potwierdzenie za pomocą VBA w programie Microsoft Excel / ponieważ usuwasz arkusze za pomocą VBA, wiesz, co robisz. Chcesz powiedzieć Excel ’ owi, żeby nie pokazywał tego ostrzeżenia i usunął ten cholerny arkusz.

Dodaj i zapisz nowy skoroszyt za pomocą VBA w programie Microsoft Excel 2016| w tym kodzie po raz pierwszy utworzyliśmy odniesienie do obiektu skoroszytu. A następnie zainicjowaliśmy go nowym obiektem skoroszytu. Zaletą tego podejścia jest to, że możesz łatwo wykonywać operacje na tym nowym skoroszycie. Podobnie jak zapisywanie, zamykanie, usuwanie itp

wyświetl komunikat na pasku stanu programu Excel VBA| pasek stanu w programie excel może być używany jako monitor kodu. Gdy kod VBA jest długi i wykonujesz kilka zadań za pomocą VBA, często wyłączasz aktualizację ekranu, aby nie zobaczyć migotania ekranu.

Wyłącz komunikaty ostrzegawcze za pomocą VBA w programie Microsoft Excel 2016| ten kod nie tylko wyłącza alerty VBA, ale także zwiększa efektywność czasową kodu. Zobaczmy jak.

popularne artykuły:

50 skrótów do Excela, aby zwiększyć produktywność | szybciej wykonywać swoje zadanie. Te skróty 50 sprawią, że będziesz pracować jeszcze szybciej w programie Excel.

funkcja VLOOKUP w Excelu | jest to jedna z najczęściej używanych i popularnych funkcji programu excel, która służy do wyszukiwania wartości z różnych zakresów i arkuszy.

COUNTIF w programie Excel 2016 / Policz wartości z warunkami używającymi tej niesamowitej funkcji. Nie musisz filtrować danych, aby policzyć określone wartości. Funkcja Countif jest niezbędna do przygotowania Pulpitu nawigacyjnego.

Jak korzystać z funkcji SUMIF w Excelu / jest to kolejna niezbędna funkcja Pulpitu nawigacyjnego. Pomaga to podsumować wartości w określonych warunkach.

Dodaj komentarz