Das FileSystemObject wird verwendet, um mit Ordnern und Dateien zu arbeiten, die mit dem System verbunden sind. Wir können damit auf Dateien, Ordner, Laufwerke und Textstreams zugreifen. Es kann nicht nur auf Dateien, Ordner und Textdateien zugreifen, sondern auch erstellen. Diese Vorgänge sind nicht auf die Festplatte des Systems beschränkt, sondern auf jedes mit der Datei verbundene Gerät. Das bedeutet, dass Sie auf USB-Sticks, CD-ROMs oder virtuell verbundene Netzlaufwerke zugreifen können.
Dies sind die Operationen, die wir mit FileSystemObject in VBA ausführen können:
Zum Erstellen, Öffnen, Lesen, Schreiben und Löschen von Textdateien.
Zum Hinzufügen, Ändern und Löschen von Ordnern.
Zum Durchlaufen von Dateien und Ordnern.
Zum Kopieren und Verschieben von Dateien oder Ordnern an andere Orte.
Um zu überprüfen, ob eine Datei oder ein Ordner am Speicherort vorhanden ist oder nicht
Wie greife ich in VBA auf FileSystemObject zu?
Das Dateisystemobjekt ist ein Teil der Microsoft Scripting Runtime Library. Um auf ein FileSystemObject zuzugreifen, müssen wir eine Verbindung herstellen oder eine Referenz hinzufügen Microsoft Scripting Runtime Library oder Scrrun.dll.
Hinweis: Das FileSystemObject unterstützt den Betrieb von Binärdateien nicht, da die Scrrun.dll das Erstellen und Bearbeiten von Dateien mit TextStream Object unterstützt.
Es gibt zwei Methoden zum Erstellen von FileSystemObject in VBA:
1: Erstellen eines FSO-Objekts mit der CreateObject-Methode:
Mit dieser Methode deklarieren wir zunächst einen variablen Objekttyp. Legen Sie dann mit CreateObject die Referenz des FSO-Objekts auf diese Variable fest:
Sub LearnFso() 'Erzeuge die Objektvariable Dim fso As Object 'Erzeuge das FileSystemObject mit Create Object Method Set fso = CreateObject("Scripting.FileSystemObject") Debug.Print fso.GetBaseName("E:\MTR\Feb'18 MTR" ) End Sub
Diese Methode ist dynamisch und übertragbar. Das heißt, wenn Sie den Code für andere Systeme freigeben, funktioniert dieser Code einwandfrei. Es spielt keine Rolle, welche Version von Microsoft Runtime Scripting Sie haben.
Der einzige Nachteil ist, dass Sie die von VBA bereitgestellte Intelligenz nicht sehen können. Sie müssen sich auf Ihr Wissen verlassen, um alle Eigenschaften und Methoden von FileSystemObject zu verwenden.
2: Erstellen eines FSO-Objekts durch Hinzufügen eines Verweises auf Microsoft Runtime Scripting
Sie können mit dem Schlüsselwort new direkt ein FileSystemObject in VBA erstellen. Dazu müssen Sie einen Verweis auf die neueste Microsoft Scripting Runtime in Ihrem System hinzufügen.
Um die Referenz hinzuzufügen, gehen Sie zur Option Referenzen im Tools-Menü. Hier finden Sie die Microsoft Scripting Runtime-DLL. Überprüfen Sie es und klicken Sie auf OK.
Jetzt können Sie das FSO-Objekt erstellen und verwenden.
Sub LearnFso() Dim fso als neues FileSystemObject Debug.Print fso.GetBaseName("E:\MTR\Feb'18 MTR") End Sub
Oder
Sub LearnFso() Dim fso as FileSystemObject Set fso = New FileSystemObject Debug.Print fso.GetBaseName("E:\MTR\Feb'18 MTR") End Sub
Beides wird gut funktionieren.
Ein großer Vorteil dieser Methode ist, dass Sie die Intelligenz von VBA sehen können. VBA zeigt Ihnen alle Eigenschaften und Methoden des fso-Objekts. Es wird auch sagen, welche Art von Variablen es akzeptiert und welche Art von Wert es zurückgibt.
Wenn Sie diesen Code für andere Systeme freigeben, müssen Sie diese anweisen, Verweise auf Scripting Runtime von Tools hinzuzufügen, andernfalls erhalten sie einen Kompilierungsfehler, dass der benutzerdefinierte Typ nicht definiert ist. Es ist also wie das Importieren anderer Programmiersprachen.
Beachten Sie, dass FSO kein Schlüsselwort ist. Sie können ihn als Variablennamen verwenden. Es ist nur eine Konvention, filesystemobject als fso zu benennen. Deshalb verwechseln manche Leute es mit einem Schlüsselwort.
Beide Methoden zum Erstellen von FSO-Objekten haben ihre Vor- und Nachteile, die ich bei ihrer Erklärung erwähnt habe. Also nach Bedarf verwenden. In diesem Artikel werde ich die zweite Methode zum Erstellen von FileSystemObject verwenden.
Nachdem wir nun wissen, wie man ein FileSystemObject in VBA erstellt, lassen Sie uns dieses Wissen für einige sinnvolle Aufgaben nutzen. Ich meine, springen wir zu den Beispielen.
Beispiel 1: Abrufen aller Unterordner in einem angegebenen Ordner
Das erste Beispiel, das wir sehen werden, ist das Abrufen der Unterordnernamen aus einem bestimmten Ordner.
Sub LearnFso() ' Variablen, die wir benötigen Dim fso As FileSystemObject ' Variable für das FileSystemObject Dim fdr As Folder ' Variable für den Basisordner Dim subfdr As Folder ' Variable für die Unterordner Dim fdrpath As String 'um den Pfad der Basis zu speichern folder 'Intialisieren der Objekte fdrpath = "D:\Downloads" 'Deklarieren des Ordners Set fso = New FileSystemObject 'Erstellen des fso-Objekts Set fdr = fso.GetFolder(fdrpath) 'Erstellen des Ordnerobjekts des angegebenen Ordners 'Schleife, um alle Name des Unterordners in Für jedes Unterverzeichnis In fdr.Unterordner Debug.Print Unterverzeichnisname Nächstes Unterverzeichnis Ende Unter
Wenn Sie den obigen Code ausführen, erhalten Sie dies.
Ja! Das ist mein Download-Ordner. Konzentrieren Sie sich nicht darauf.
Wie hat das funktioniert?
Lassen Sie uns in Schritten verstehen:
1: Decaring-Variablen, die wir brauchen
Dim fso As FileSystemObject ' Variable für das FileSystemObject
Dim fdr As Folder ' Variable für den Basisordner
Dim subfdr As Folder ' Variable für die Unterordner
Zuerst haben wir alle Variablen deklariert, die wir in diesem Beispiel benötigen. Die erste Variable ist natürlich die fso als Dateisystemobjekt. Die beiden Variablen fdr und subfdr sind vom Typ Ordner. Wir verwenden das fso-Objekt, um ein Dateitypobjekt zu erstellen, anstatt es direkt zu erstellen. Die fdrpath Diese Verwendungsvariable wird verwendet, um den Pfad des Basisordners zu speichern, von dem wir alle Unterordner abrufen möchten.
2: Objekte initialisieren
fdrpath = "D:\Downloads" 'Ordner deklarieren
Set fso = New FileSystemObject 'Erstellen des fso-Objekts
Set fdr = fso.GetFolder(fdrpath) 'Erstellen des Ordnerobjekts des angegebenen Ordners
In diesem Schritt haben wir alle deklarierten Objekte mit Ausnahme von subfdr initialisiert. Beachten Sie, dass wir die Dateivariable fdr mit der Methode getFolder von fso-Objekten initialisiert haben.
Die Methode GetFolder() von FileSystemObject nimmt den Pfad eines Ordners oder Verzeichnisses als String und gibt den Dateityp object zurück.
3: Schleife, um alle Unterordnernamen im Ordnerobjekt zu erhalten
Für jeden Unterordner in fdr.Unterordner
Debug.Print subfdr.Name
Nächster Unterordner
Hier haben wir für jede Schleife eine Schleife verwendet, um jeden Unterordner im Dateiobjekt fdr zu durchlaufen. Wir haben die SubFolders-Eigenschaft des Dateiobjekts für die Schleife verwendet.
Wir verwenden die name-Eigenschaft, um die Namen jedes Unterordners zu erhalten. Und es ist vollbracht.
Beispiel 2: Alle Dateipfade in einem Ordner und seinen Unterordnern abrufen
Um alle Pfade oder vollqualifizierten Namen aller Dateien in einem Ordner und seinen Unterordnern zu erhalten, müssen wir im Code von Beispiel 1 einige weitere Zeilen hinzufügen.
Sub LearnFso() Dim fso As FileSystemObject Dim fdr As Folder ' Variable für den Basisordner Dim subfdr As Folder ' Variable für die Unterordner Dim fdrpath As String 'zum Speichern des Pfads des Basisordners Dim fl As File 'zum Speichern des Dateiobjekts fdrpath = "D:\downloads" Set fso = New FileSystemObject Set fdr = fso.GetFolder(fdrpath) 'Schleife, um alle Unterordnernamen in For Each subfdr In fdr.SubFolders For Each fl In subfdr.Files zu erhalten, um jede Datei zu durchlaufen Debug.Print fl.Path 'Dateiname abrufen Next fl Next subfdr 'um die Dateien des Hauptordners zu erhalten For Each fl In fdr.Files Debug.Print fl.Path Next fl End Sub
Die Methode Folder.Files() ist die Methode, die die Dateien in einem Unterordner zurückgibt. Die Methode File.Path() gibt die vollständige Adresse der Datei zurück.
Wir haben jeweils eine innere Schleife, um alle Dateien im Unterordner des Hauptordners und dessen zu durchlaufen.
Um die Dateien des Hauptordners zu erhalten, verwenden wir eine weitere Schleife.
Beispiel 3: Speichern Sie die Dateinamen in einer CSV-Datei.
Im vorherigen Beispiel haben wir gelernt, wie Sie die Dateipfade bestimmter Ordner im unmittelbaren Fenster drucken. In diesem Beispiel erfahren wir, wie Sie diese Pfade in einer CSV-Datei speichern. Dazu müssen wir nur ein paar Zeilen zum Code hinzufügen. Siehe die fett gedruckten Codezeilen unten.
Sub LearnFso() Dim fso As FileSystemObject Dim fdr As Folder ' Variable für den Basisordner Dim subfdr As Folder ' Variable für die Unterordner Dim fdrpath As String 'zum Speichern des Pfads des Basisordners Dim fl As File 'zum Speichern des Dateiobjekts Dim fileList As TextStream 'Ein Textstream-Objekt 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) 'Schleife, um alle Unterordnernamen in For Each subfdr In fdr.SubFolders For Each fl In subfdr.Files zu erhalten 'um jede Datei zu durchlaufen fileList.Write fl.Path & "," Next fl Next subfdr 'um die Dateien des Hauptordners For Each fl In fdr.Files fileList.Write fl.Path & "," Next fl fileList.Close End Sub
Hier haben wir ein neues Objekt vom Typ FileStream namens . deklariert Dateiliste
Wir haben die filelist-Variable mit einem filestream-Objekt initialisiert, indem wir die folgende Zeile verwendet haben.
Set fileList = fso.CreateTextFile(fdrpath & "\File List in This Folder.csv", True, False)
Wir verwenden die Methode CreateTextFile von FSO, um ein FileStream-Objekt zu erstellen. Es erstellt eine Textdatei. Diese Methode akzeptiert den Namen einer Datei mit einem vollständigen Pfad. Die erste Variable tut dies. Wir verwenden die Erweiterung .csv, um eine CSV-Datei zu erstellen. Die zweite Variable wird verwendet, um das Überschreiben zu ermöglichen. Das dritte Argument ist False, um zu deklarieren, dass es sich nicht um eine Binärdatei handelt.
In den Schleifen ersetzen wir die Methode debug.print durch filelist.Write, um jeden Dateipfad in die erstellte Datei zu schreiben.
Also ja, Leute, so können Sie das FileSystemObject verwenden. Das BFS kann für viele weitere Dinge verwendet werden, die wir in den kommenden Artikeln besprechen werden. Wenn Sie Zweifel an diesem Artikel der BFS-bezogenen Frage haben, fragen Sie mich im Kommentarbereich unten.
Erste Schritte mit Excel VBA UserForms| Ich werde erklären, wie Sie ein Formular in Excel erstellen, wie Sie die VBA-Toolbox verwenden, wie Sie Benutzereingaben verarbeiten und schließlich die Benutzereingaben speichern. Wir werden diese Themen anhand eines Beispiels und einer Schritt-für-Schritt-Anleitung durchgehen.
VBA-Variablen in Excel| VBA steht für Visual Basic für Applikationen. Es ist eine Programmiersprache von Microsoft. Es wird mit Microsoft Office-Anwendungen wie MSExcel, MS-Word und MS-Access verwendet, während VBA-Variablen spezifische Schlüsselwörter sind.
Gültigkeitsbereich von Excel-VBA-Variablen| In allen Programmiersprachen haben wir Variablenzugriffsspezifizierer, die definieren, von wo aus auf eine definierte Variable zugegriffen werden kann. Excel VBA ist keine Ausnahme. Auch VBA hat Bereichsspezifizierer.
ByRef- und ByVal-Argumente | Wenn ein Argument als ByRef-Argument an eine andere Unterfunktion oder Funktion übergeben wird, wird die Referenz der tatsächlichen Variablen gesendet. Alle Änderungen, die an der Kopie der Variablen vorgenommen werden, spiegeln sich im ursprünglichen Argument wider.
Löschen Sie Blätter ohne Bestätigungsaufforderung mit VBA in Microsoft Excel | Da Sie Blätter mit VBA löschen, wissen Sie, was Sie tun. Sie möchten Excel anweisen, diese Warnung nicht anzuzeigen und das verdammte Blatt zu löschen.
Hinzufügen und Speichern einer neuen Arbeitsmappe mit VBA in Microsoft Excel 2016| In diesem Code haben wir zuerst einen Verweis auf ein Arbeitsmappenobjekt erstellt. Und dann haben wir es mit einem neuen Arbeitsmappenobjekt initialisiert. Der Vorteil dieses Ansatzes besteht darin, dass Sie Vorgänge in dieser neuen Arbeitsmappe problemlos ausführen können. Wie Speichern, Schließen, Löschen usw.
Anzeigen einer Nachricht in der Excel VBA-Statusleiste| Die Statusleiste in Excel kann als Codemonitor verwendet werden. Wenn Ihr VBA-Code lang ist und Sie mehrere Aufgaben mit VBA ausführen, deaktivieren Sie häufig die Bildschirmaktualisierung, damit dieser Bildschirm nicht flackert.
Deaktivieren Sie Warnmeldungen mit VBA in Microsoft Excel 2016| Dieser Code deaktiviert nicht nur VBA-Warnungen, sondern erhöht auch die Zeiteffizienz des Codes. Mal sehen wie.
Populäre Artikel:
50 Excel-Kurzbefehle zur Steigerung Ihrer Produktivität | Werden Sie schneller bei Ihrer Aufgabe. Mit diesen 50 Tastenkombinationen arbeiten Sie noch schneller mit Excel.
Die SVERWEIS-Funktion in Excel | Dies ist eine der am häufigsten verwendeten und beliebtesten Funktionen von Excel, die verwendet wird, um Werte aus verschiedenen Bereichen und Blättern zu suchen.
ZÄHLENWENN in Excel 2016 | Zählen Sie Werte mit Bedingungen mit dieser erstaunlichen Funktion. Sie müssen Ihre Daten nicht filtern, um bestimmte Werte zu zählen. Die Countif-Funktion ist unerlässlich, um Ihr Dashboard vorzubereiten.
So verwenden Sie die SUMIF-Funktion in Excel | Dies ist eine weitere wesentliche Funktion des Dashboards. Dies hilft Ihnen, Werte unter bestimmten Bedingungen zusammenzufassen.