image

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 Textströme 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 alle mit der Datei verbundenen Geräte. Dies bedeutet, dass Sie auf USB-Sticks, CD-ROMs oder virtuell verbundene Netzwerklaufwerke 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.

Durch Dateien und Ordner iterieren.

Zum Kopieren und Verschieben von Dateien oder Ordnern an andere Orte.

Zum Ü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 Teil der Microsoft Scripting Runtime Library.

Um auf ein FileSystemObject zugreifen zu können, müssen Sie eine Verbindung zur Microsoft Scripting Runtime Library oder zur Scrrun.dll * herstellen oder einen Verweis darauf hinzufügen.

Hinweis: Das FileSystemObject unterstützt den Betrieb von Binärdateien nicht, da die Scrrun.dll die Erstellung und Bearbeitung 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. Setzen Sie dann die Referenz des FSO-Objekts mit CreateObject auf diese Variable:

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

Diese Methode ist dynamisch und übertragbar. 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 nutzen zu können.

2: Erstellen eines FSO-Objekts durch Hinzufügen eines Verweises auf Microsoft Runtime Scripting Mit dem neuen Schlüsselwort können Sie 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 Menü Extras.

Hier finden Sie die Microsoft Scripting Runtime-DLL. Überprüfen Sie es und klicken Sie auf OK.

image

Jetzt können Sie das FSO-Objekt erstellen und verwenden.

Sub LearnFso()

Dim fso as new 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 Hauptvorteil dieser Methode ist, dass Sie die Intelligenz von VBA sehen können. VBA zeigt Ihnen alle Eigenschaften und Methoden des fso-Objekts. Außerdem wird angegeben, welche Art von Variablen akzeptiert werden und welche Art von Wert zurückgegeben wird.

image

Wenn Sie diesen Code für andere Systeme freigeben, müssen Sie diese anweisen, von Tools einen Verweis auf Scripting Runtime hinzuzufügen, da sonst ein Kompilierungsfehler angezeigt wird, dass der benutzerdefinierte Typ nicht definiert ist. Es ist also so, als würde man andere Programmiersprachen importieren.

Beachten Sie, dass FSO kein Schlüsselwort ist. Sie können es als Variablennamen verwenden. Es ist nur eine Konvention, das Dateisystemobjekt als fso zu bezeichnen. Das ist der Grund, warum manche Leute es als Schlüsselwort verwechseln. Beide Methoden zum Erstellen von FSO-Objekten haben ihre Vor- und Nachteile, die ich bei der Erläuterung erwähnt habe. Verwenden Sie es also nach Ihren Wünschen. In diesem Artikel werde ich die zweite Methode zum Erstellen von FileSystemObject verwenden.

Nachdem wir nun wissen, wie ein FileSystemObject in VBA erstellt wird, können wir dieses Wissen für einige wichtige Aufgaben verwenden. Ich meine, lasst uns zu den Beispielen springen.

Beispiel 1: Alle Unterordner in einem bestimmten Ordner abrufen Das erste Beispiel, das wir sehen werden, ist das Abrufen der Unterordnernamen aus einem bestimmten Ordner.

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 subfdr

End Sub

Wenn Sie den obigen Code ausführen, erhalten Sie Folgendes.

image

Ja! Das ist mein Download-Ordner. Konzentriere dich nicht darauf.

Wie hat das funktioniert?

Lassen Sie uns in Schritten verstehen:

1: Deklarieren von 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 Zuerst haben wir alle Variablen deklariert, die wir in diesem Beispiel benötigen.

Die erste Variable ist natürlich das Objekt fso als Dateisystem. Die beiden Variablen fdr und subfdr sind vom Ordnertyp. Wir werden das fso-Objekt verwenden, um ein Dateitypobjekt zu erstellen, anstatt es direkt zu erstellen. Die Variable fdrpath * is use wird verwendet, um den Pfad des Basisordners zu speichern, von dem alle Unterordner abgerufen werden sollen.

2: Initialisierung der Objekte

fdrpath = „D: \ Downloads“ _ ‚Deklarieren des Ordners _Set fso = New FileSystemObject‘ Erstellen des fso-Objekts _ _Set fdr = fso.GetFolder (fdrpath) ‚Erstellen des Ordnerobjekts eines bestimmten Ordners In diesem Schritt haben wir alle Objekte initialisiert, die wir hatten außer subfdr erklärt. Beachten Sie, dass wir die Variable fdr mit der Methode getFolder von fso-Objekten initialisiert haben.

Die GetFolder () -Methode von FileSystemObject nimmt den Pfad eines Ordners oder Verzeichnisses als Zeichenfolge und gibt das Dateitypobjekt zurück.

3: Schleife, um alle Namen der Unterordner im Ordnerobjekt

abzurufen Für jeden Subfdr In fdr.SubFolders Debug.Print Subfdr.Name Next subfdr Hier haben wir für jede Schleife ein verwendet, um jeden Unterordner im fdr-Dateiobjekt zu durchlaufen. Wir haben die SubFolders-Eigenschaft des Dateiobjekts zum Schleifen verwendet.

Wir verwenden die name-Eigenschaft, um die Namen der einzelnen Unterordner abzurufen. Und es ist geschafft.

Beispiel 2: Alle Dateipfade in einem Ordner und seinen Unterordnern abrufen Um alle Pfade oder vollständig qualifizierten Namen aller Dateien in einem Ordner und seinem Unterordner abzurufen, müssen Sie in Beispiel 1-Code einige weitere Zeilen hinzufügen.

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 to get all the sub folders name in

For Each subfdr In fdr.SubFolders

For Each fl In subfdr.Files 'to loop throgh each file

Debug.Print fl.Path 'getting file name

Next fl

Next subfdr

'to get the files of main folder

For Each fl In fdr.Files

Debug.Print fl.Path

Next fl

End Sub

Die Folder.Files () -Methode ist die Methode, die die Dateien in einem Unterordner zurückgibt. Die File.Path () -Methode gibt die vollständige Adresse der Datei zurück. Wir haben jeweils eine innere Schleife, um alle Dateien im Unterordner des Hauptordners und seiner zu durchlaufen. Um die Dateien des Hauptordners zu erhalten, verwenden wir eine andere Schleife.

Beispiel 3: Speichern Sie die Dateinamen in einer CSV-Datei.

Im vorherigen Beispiel haben wir gelernt, wie die Dateipfade bestimmter Ordner im unmittelbaren Fenster gedruckt werden. In diesem Beispiel erfahren Sie, wie Sie diese Pfade in einer CSV-Datei speichern. Dazu müssen wir dem Code nur ein paar Zeilen hinzufügen. Siehe die Bolde-Codezeilen unten.

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)

'loop to get all the sub folders name in

For Each subfdr In fdr.SubFolders

For Each fl In subfdr.Files 'to loop through each file

fileList.Write fl.Path & ","

Next fl

Next subfdr

'to get the files of main folder

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 mit dem Namen

deklariert === fileList

Wir haben die Dateilistenvariable mit einem Dateistream-Objekt unter Verwendung der folgenden Zeile initialisiert.

Set fileList = fso.CreateTextFile (fdrpath & „\ Dateiliste in diesem Ordner.csv“, True, False) Wir verwenden die Methode CreateTextFile von FSO, um ein FileStream-Objekt zu erstellen.

Es wird eine Textdatei erstellt. 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 erklären, dass es sich nicht um eine Binärdatei handelt. In den Schleifen ersetzen wir die Datei debug.print durch die Methode 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 diskutieren werden. Wenn Sie Zweifel an diesem Artikel der FSO-bezogenen Anfrage haben, fragen Sie mich im Kommentarbereich unten.

Verwandte Artikel:

link: / Applications-Word-Outlook-in-VBA-Erste Schritte mit Excel-VBA-Benutzerformularen [Erste Schritte mit Excel VBA UserForms] | * Ich werde erklären, wie man ein Formular in Excel erstellt und wie man es verwendet VBA-Toolbox, wie man Benutzereingaben behandelt und schließlich die Benutzereingaben speichert. Wir werden diese Themen anhand eines Beispiels und einer Schritt-für-Schritt-Anleitung durchgehen.

link: / allgemeine-themen-in-vba-vba-variablen-in-excel [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 bestimmte Schlüsselwörter sind.

link: / allgemeine-themen-in-vba-excel-vba-variablenbereich [Excel VBA-Variablenbereich] | * 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 verfügt über Bereichsspezifizierer.

link: / Zellenbereiche-Zeilen-und-Spalten-in-vba-was-ist-der-Unterschied-zwischen-byref-und-byval-Argumenten-vba-Interview-Frage [ByRef- und ByVal-Argumente] | Wenn ein Argument als ByRef-Argument an ein anderes Sub oder eine andere Funktion übergeben wird, wird die Referenz der tatsächlichen Variablen gesendet. Alle Änderungen, die an der Kopie der Variablen vorgenommen werden, werden im ursprünglichen Argument wiedergegeben.

`link: / files-arbeitsmappe-und-arbeitsblätter-in-vba-lösche-blätter-ohne-bestätigungs-aufforderungen-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.

link: / files-workbook-and-worksheets-in-vba-add-and-save-new-workbook-using-vba-in-microsoft-excel [Neue Arbeitsmappe mit VBA in Microsoft Excel 2016 hinzufügen und speichern] | 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 Operationen an dieser neuen Arbeitsmappe problemlos ausführen können. Wie Speichern, Schließen, Löschen usw. `link: / menüs-Symbolleisten-Statusleiste-in-vba-Anzeige-einer-Nachricht-in-der-Statusleiste-mit-vba-in-Microsoft-Excel [Anzeige einer Nachricht ein Die 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.

link: / allgemeine-themen-in-vba-ausschalten-warnen-nachrichten-mit-vba-in-microsoft-excel [Warnmeldungen mit VBA in Microsoft Excel 2016 ausschalten] | * Dieser Code deaktiviert nicht nur VBA Warnungen, erhöht aber auch die Zeiteffizienz des Codes. Mal sehen, wie.

Beliebte Artikel:

link: / Tastatur-Formel-Verknüpfungen-50-Excel-Verknüpfungen-zur-Steigerung-Ihrer-Produktivität [50 Excel-Verknüpfungen zur Steigerung Ihrer Produktivität] | Werden Sie schneller bei Ihrer Aufgabe. Mit diesen 50 Verknüpfungen können Sie noch schneller in Excel arbeiten.

link: / formeln-und-funktionen-einführung-der-vlookup-funktion [Die VLOOKUP-Funktion in Excel] | Dies ist eine der am häufigsten verwendeten und beliebtesten Funktionen von Excel, mit der Werte aus verschiedenen Bereichen und Tabellen gesucht werden. link: / tips-countif-in-microsoft-excel [COUNTIF in Excel 2016] | Zählen Sie Werte mit Bedingungen, die diese erstaunliche Funktion verwenden. Sie müssen Ihre Daten nicht filtern, um bestimmte Werte zu zählen.

Die Countif-Funktion ist wichtig, um Ihr Dashboard vorzubereiten.

link: / excel-formel-und-funktion-excel-sumif-funktion [Verwendung der SUMIF-Funktion in Excel] | Dies ist eine weitere wichtige Funktion des Dashboards. Auf diese Weise können Sie Werte unter bestimmten Bedingungen zusammenfassen.