Was ist FileSystemObject (FSO) und wie wird es in VBA Excel verwendet?

Fb-Taste

Die 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. Dies 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 Teil der Microsoft Scripting Runtime Library. Um auf ein FileSystemObject zuzugreifen, müssen wir eine Verbindung herstellen oder einen Verweis auf die Microsoft Scripting Runtime Library oder Scrrun hinzufügen.dll.

Hinweis: Das FileSystemObject unterstützt den Betrieb von Binärdateien nicht, da die Scrrun.dll unterstützt die Erstellung und Bearbeitung von Dateien mit TextStream-Objekt.

Es gibt zwei Methoden zum Erstellen von FileSystemObject in VBA:

1: Erstellen eines FSO-Objekts Mit der CreateObject-Methode:

Mit dieser Methode deklarieren wir zuerst 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 der Microsoft Runtime Scripting-Version Sie haben.

Der einzige Nachteil ist, dass Sie das von VBA bereitgestellte Intellisense nicht sehen können. Sie müssen sich auf Ihr Wissen verlassen, um alle Eigenschaften und Methoden von FileSystemObject .

2: Erstellen eines FSO-Objekts durch Hinzufügen eines Verweises auf Microsoft Runtime Scripting

Sie können ein FileSystemObject in VBA direkt mit dem Schlüsselwort new 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.

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

Beide funktionieren einwandfrei.

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 akzeptieren wird und welche Art von Wert es zurückgeben wird.

Wenn Sie diesen Code für andere Systeme freigeben, müssen Sie ihnen mitteilen, dass sie von Tools aus einen Verweis auf die Skriptlaufzeit hinzufügen sollen. Es ist also wie das Importieren anderer Programmiersprachen.

Beachten Sie, dass FSO kein Schlüsselwort ist. Sie können es 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 der Erläuterung erwähnt habe. So verwenden Sie nach Ihrem Bedarf. In diesem Artikel werde ich die zweite Methode zum Erstellen von FileSystemObject .

Nun, da wir wissen, wie man ein FileSystemObject in VBA erstellt, wollen wir dieses Wissen nutzen, um einige sinnvolle Aufgaben zu erledigen. Ich meine, lasst uns zu den Beispielen springen.

Beispiel 1: Holen Sie sich alle Unterordner in einem bestimmten Ordner

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 subfdrEnd Sub

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

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

Wie funktioniert das?

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 das fso als file sytem Objekt. Die beiden Variablen fdr und subfdr sind vom Typ folder. 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 wir alle Unterordner erhalten möchten.

2: Initialisieren 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 initialisierten wir alle Objekte, die wir deklariert hatten, außer subfdr. Beachten Sie, dass wir die fdr-Dateivariable mit der Methode GetFolder von fso-Objekten initialisiert haben.

Die GetFolder() -Methode 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

Für jeden Unterordner in fdr abzurufen.Unterordner

Debuggen.Drucken subfdr.Name

Next subfdr

Hier haben wir eine for each-Schleife verwendet, um jeden Unterordner im fdr-Dateiobjekt zu durchlaufen. Wir haben die Eigenschaft SubFolders des Dateiobjekts zum Schleifen verwendet.

Wir verwenden die Eigenschaft name, um die Namen jedes Unterordners abzurufen. Und es ist getan.

Beispiel 2: Alle Dateipfade in einem Ordner und seinen Unterordnern abrufen

Um alle Pfade oder vollqualifizierten Namen aller Dateien in einem Ordner und seinem Unterordner abzurufen, müssen wir im Code von Beispiel 1 einige weitere Zeilen hinzufügen.

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

Der Ordner.Files () Methode ist die Methode, die die Dateien in einem Unterordner zurückgibt. Datei.Path() Methode gibt die vollständige Adresse der Datei.

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 man die Dateipfade bestimmter Ordner im unmittelbaren Fenster druckt. 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 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

Hier haben wir ein neues Objekt vom Typ FileStream mit dem Namen FileList deklariert

Wir haben die Variable filelist mit einem filestream-Objekt mit der folgenden Zeile initialisiert.

Setzen Sie 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 erstellt eine Textdatei. Diese Methode akzeptiert den Namen einer Datei mit einem vollständigen Pfad. Die erste Variable tut dies. Wir verwenden die .csv-Erweiterung, 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 das Debug.drucken mit Dateiliste.Write-Methode, um jeden Dateipfad in die erstellte Datei zu schreiben.

Also ja Leute, so kann man das FileSystemObject verwenden. Das FSO 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 Abfrage haben, fragen Sie mich im Kommentarbereich unten.

Erste Schritte mit Excel VBA UserForms/ Ich werde erklären, wie man ein Formular in Excel erstellt, wie man die VBA Toolbox verwendet, wie man mit Benutzereingaben umgeht und schließlich, wie man die Benutzereingaben speichert. Wir werden diese Themen anhand eines Beispiels und einer schrittweisen Anleitung durchgehen.

VBA-Variablen in Excel/ VBA steht für Visual Basic for Applications. 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.

Excel VBA Variablenumfang/ In allen Programmiersprachen gibt es Variablenzugriffsspezifizierer, die definieren, von wo aus auf eine definierte Variable zugegriffen werden kann. Excel VBA ist keine Ausnahme. VBA hat auch Bereichsspezifizierer.

ByRef- und ByVal-Argumente / Wenn ein Argument als ByRef-Argument an eine andere Sub oder Funktion übergeben wird, wird die Referenz der tatsächlichen Variablen gesendet. Alle Änderungen, die an der Kopie der Variablen vorgenommen wurden, werden im ursprünglichen Argument wiedergegeben.

Löschen von Blättern ohne Bestätigungsaufforderungen 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.

Anzeige einer Meldung in der Excel VBA-Statusleiste / Die Statusleiste in Excel kann als Code-Monitor 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 von 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.

Beliebte Artikel:

50 Excel-Verknüpfungen zur Steigerung Ihrer Produktivität / Schneller bei Ihrer Aufgabe. Mit diesen 50 Verknüpfungen können Sie in Excel noch schneller arbeiten.

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 Blättern gesucht werden.

COUNTIF in Excel 2016 / Zähle Werte mit Bedingungen mit dieser erstaunlichen Funktion. Sie müssen Ihre Daten nicht filtern, um bestimmte Werte zu zählen. Die Countif-Funktion ist für die Vorbereitung Ihres Dashboards unerlässlich.

Verwendung der SUMIF-Funktion in Excel / Dies ist eine weitere wichtige Funktion des Dashboards. Dies hilft Ihnen, Werte unter bestimmten Bedingungen zusammenzufassen.

Schreibe einen Kommentar