Χρήση του FileSystemObject στο Excel VBA

Χρήση του FileSystemObject (FSO) στο Excel VBA

Το FileSystemObject (FSO) σας δίνει πρόσβαση σε μια ολόκληρη γκάμα λειτουργιών για πρόσβαση στο σύστημα αρχείων του υπολογιστή σας. Χρησιμοποιώντας αυτό το αντικείμενο, μπορείτε εύκολα να έχετε πρόσβαση σε αρχεία, φακέλους και μονάδες δίσκου, καθώς και να διαβάζετε και να γράφετε σε αρχεία.

Πολλές από τις λειτουργίες FSO θα μπορούσαν να γραφτούν από εσάς σε παραδοσιακό VBA, αλλά θα απαιτούσαν περισσότερη κωδικοποίηση και θα ήταν πιο δύσκολο για έναν εισερχόμενο προγραμματιστή να διατηρήσει και να κατανοήσει. Το FSO είναι ένα δοκιμασμένο API (διεπαφή προγραμματισμού εφαρμογών) και είναι πιο αξιόπιστο από τον δικό σας κώδικα. Είναι εύκολο στη χρήση και έτοιμο και διαθέσιμο.

Το FSO λειτουργεί με διεθνή πρότυπα και ρυθμίσεις που έχετε στον υπολογιστή σας. Εάν διανέμετε την εφαρμογή Excel σε παγκόσμιο επίπεδο, τότε η χρήση του FSO θα φροντίσει για τυχόν διαφορές στις ρυθμίσεις μεταξύ των χωρών, τις οποίες ο δικός σας κώδικας θα είχε πρόβλημα να κάνει.

Το FSO θα σας επιτρέψει να κάνετε σχεδόν τα πάντα σε κώδικα VBA που θα μπορούσατε να κάνετε στον Windows File Explorer. Σας δίνει πλήρη πρόσβαση στο σύστημα αρχείων των Windows.

Δημιουργία ενός FileSystemObject

Το FileSytemObject δεν αποτελεί μέρος του Excel VBA. Μπορείτε να χρησιμοποιήσετε το FSO δημιουργώντας ένα αντικείμενο (καθυστερημένη σύνδεση) στο VBA:

123 Sub CreateFSO ()Ορισμός MyFSO = CreateObject ("Scripting.FileSystemObject")Τέλος υπο

Εναλλακτικά, μπορείτε να προσθέσετε μια αναφορά στο VBA για τη βιβλιοθήκη FSO. Αυτό ονομάζεται έγκαιρη δέσμευση και είναι γρηγορότερο από ό, τι αργά, καθώς το αντικείμενο δεν χρειάζεται να δημιουργηθεί όταν εκτελείται ο κώδικας.

Για να προσθέσετε μια αναφορά, πρέπει να πατήσετε το Alt-F11 για να εισέλθετε στο Visual Basic Editor (VBE) και, στη συνέχεια, να χρησιμοποιήσετε το «Εργαλεία | Αναφορές» από το μενού VBE. Αυτό θα εμφανίσει ένα αναδυόμενο παράθυρο για να επιλέξετε τη σχετική αναφορά (δείτε παρακάτω).

Κάντε κύλιση προς τα κάτω στη λίστα των διαθέσιμων αναφορών μέχρι να δείτε το «Microsoft Scripting Runtime». Επιλέξτε το πλαίσιο και κάντε κλικ στο OK και η βιβλιοθήκη είναι πλέον μέρος της εφαρμογής σας.

Η τοποθεσία του αρχείου βιβλιοθήκης DLL είναι C: \ Windows \ SysWOW64 \ scrrun.dll

Εάν διανέμετε την αίτησή σας σε άλλους συναδέλφους ή τοποθεσίες, είναι απαραίτητο να έχουν αυτό το αρχείο στη σωστή τοποθεσία στον υπολογιστή τους, διαφορετικά ο κωδικός σας θα κάνει λάθος.

Αξίζει να τοποθετήσετε μια παγίδα σφάλματος στο συμβάν «WorkbookOpen» χρησιμοποιώντας την εντολή Dir για να ελέγξετε εάν υπάρχει το αρχείο. Εάν απουσιάζει, τότε δώστε ένα προειδοποιητικό μήνυμα και κλείστε το αρχείο Excel.

Μόλις προστεθεί η αναφορά, μπορείτε να χρησιμοποιήσετε τον ακόλουθο κώδικα για να δημιουργήσετε το FSO:

123 Sub TestFSO ()Dim MyFSO ως νέο FileSystemObjectΤέλος υπο

Όλα τα παραδείγματα σε αυτό το άρθρο θα χρησιμοποιήσουν αυτήν τη μεθοδολογία για τη δημιουργία του FSO.

Το FSO έχει πολλές διαθέσιμες μεθόδους και ιδιότητες. Αυτά χωρίζονται εδώ σε ενότητες ανάλογα με το τι μπορούν να κάνουν.

Χρήση των μεθόδων «Υπάρχει»

Μπορείτε να χρησιμοποιήσετε μια μέθοδο FSO για να ελέγξετε εάν υπάρχει μονάδα δίσκου, φάκελος ή αρχείο. Αυτές οι μέθοδοι είναι εύκολες στη χρήση και απαιτούν μόνο μία παράμετρο.

123456 Sub CheckExistance ()Dim MyFSO ως νέο FileSystemObjectMsgBox MyFSO.DriveExists ("C:")MsgBox MyFSO.FolderExists ("C: \ temp \")MsgBox MyFSO.FileExists ("C: \ temp \ testfile.txt")Τέλος υπο

Αυτές οι δηλώσεις θα επιστρέψουν "True" υποθέτοντας ότι ο υπολογιστής σας διαθέτει μονάδα C:, έναν φάκελο που ονομάζεται "Temp" και ένα αρχείο στο φάκελο Temp που ονομάζεται "testfile.txt"

Οι συμβολοσειρές κειμένου στις παραμέτρους δεν έχουν διάκριση πεζών-κεφαλαίων. Δεν μπορείτε να χρησιμοποιήσετε μπαλαντέρ σε καμία από αυτές τις μεθόδους.

Δεν μπορείτε επίσης να χρησιμοποιήσετε διευθύνσεις URL (Uniform Resource Locators) για να περιγράψετε έναν φάκελο ή μια θέση αρχείου. Το FSO λειτουργεί καθαρά στο λειτουργικό σύστημα των Windows και το σύστημα αρχείων σε αυτό. Για μια εξωτερική τοποθεσία διακομιστή, πρέπει πρώτα να αντιστοιχίσετε μια μονάδα δίσκου σε αυτήν και στη συνέχεια να χρησιμοποιήσετε την ίδια τη διαδρομή της μονάδας δίσκου.

Χρησιμοποιώντας τις μεθόδους «Λήψη»

Το FSO διαθέτει πολυάριθμες μεθόδους για να λάβετε πληροφορίες σχετικά με το αρχείο και τη διαδρομή, είτε διαχωρίζοντας τη διαδρομή και το αρχείο, είτε παίρνοντας πληροφορίες αρχείου ή φακέλου, όπως ημερομηνία δημιουργίας ή ημερομηνία τροποποίησης.

GetAbsolutePathname

Αυτό θα παρέχει μια πλήρη διαδρομή από τη ρίζα της καθορισμένης μονάδας δίσκου.

Η σύνταξη είναι:

GetAbsolutePathName (pathspec)

12345 Sub AbsolutePath ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "c:…"MsgBox MyFSO.GetAbsolutePathName (Pth)Τέλος υπο

Αυτό θα επιστρέψει μια συμβολοσειρά ‘C: \ Users \ Richard \ Documents’. Αυτό συμβαίνει επειδή η διαδρομή έχει καθοριστεί ως C: ακολουθούμενη από τρεις τελείες. Κάθε τελεία σημαίνει ένα επόμενο επίπεδο στη δομή του φακέλου.

GetBaseName

Αυτό επιστρέφει το όνομα ενός καθορισμένου αρχείου ή φακέλου.

Η σύνταξη είναι:

GetBaseName(μονοπάτι)

12345 Sub BaseName ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "C: \ temp \ testfile.txt"MsgBox MyFSO.GetBaseName (Pth)Τέλος υπο

Αυτός ο κωδικός θα επιστρέψει "testfile". Η μέθοδος επιστρέφει την τελευταία ενότητα στο όνομα της διαδρομής. Εάν είναι αρχείο, τότε δεν επιστρέφει το επίθημα αρχείου.

Εάν η διαδρομή δεν μπορεί να βρεθεί, θα επιστρέψει μια κενή συμβολοσειρά.

GetDrive

Αυτό σας επιτρέπει να χρησιμοποιήσετε κώδικα για να αποκτήσετε πρόσβαση στις πληροφορίες της μονάδας δίσκου, με βάση το καθορισμένο γράμμα μονάδας δίσκου.

Η σύνταξη είναι:

GetDrive (drivespec)

123456 Sub DriveInfo ()Dim MyFSO As New FileSystemObject, Pth As String, Dr As DrivePth = "C:"Ορισμός Dr = MyFSO.GetDrive (Pth)MsgBox Dr.FreeSpaceΤέλος υπο

Αυτή η μέθοδος επιστρέφει ένα αντικείμενο μονάδας δίσκου βάσει της καθορισμένης μονάδας δίσκου. Μπορείτε να χρησιμοποιήσετε αυτό το αντικείμενο για πρόσβαση σε πληροφορίες σχετικά με τη μονάδα δίσκου, όπως διαθέσιμο ελεύθερο χώρο.

Κουραστήκατε να ψάχνετε για παραδείγματα κώδικα VBA; Δοκιμάστε το AutoMacro!

GetDriveName

Αυτή η μέθοδος θα διαχωρίσει το όνομα της μονάδας δίσκου από μια συμβολοσειρά διαδρομής / ονόματος αρχείου.

Η σύνταξη είναι:

GetDriveName (μονοπάτι)

12345 Sub DriveName ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "C: \ temp \ testfile.txt"MsgBox MyFSO.GetDriveName (Pth)Τέλος υπο

Αυτό θα επιστρέψει "C:"

GetExtensionName

Αυτό θα επιστρέψει το επίθημα αρχείου στη καθορισμένη διαδρομή.

Η σύνταξη είναι:

GetExtensionName (μονοπάτι)

12345 Sub ExtensionName ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "C: \ temp \ testfile.txt"MsgBox MyFSO.GetExtensionName (Pth)Τέλος υπο

Αυτό θα επιστρέψει "txt".

Εάν δεν έχει καθοριστεί κανένα αρχείο, τότε θα επιστρέψει μια κενή συμβολοσειρά.

GetFile

Αυτή η μέθοδος επιστρέφει ένα αντικείμενο αρχείου, το οποίο περιέχει διάφορες πληροφορίες για το ίδιο το αρχείο.

Η σύνταξη είναι:

GetFile (filespec)

123456 Sub FileInfo ()Dim MyFSO As New FileSystemObject, Pth As String, Fn As FilePth = "C: \ temp \ testfile.txt"Ορισμός Fn = MyFSO.GetFile (Pth)MsgBox Fn.DateCreatedΤέλος υπο

Αυτό θα επιστρέψει την ημερομηνία και την ώρα που δημιουργήθηκε το καθορισμένο αρχείο. Εάν δεν έχει καθοριστεί κανένα αρχείο ή το αρχείο δεν υπάρχει, θα λάβετε ένα σφάλμα "το αρχείο δεν βρέθηκε".

12345 Sub FileName ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "C: \ temp \ testfile.txt"MsgBox MyFSO.GetFileName (Pth)Τέλος υπο

Αυτό θα επιστρέψει το 'testfile.txt'.

GetFolder

Αυτό δημιουργεί ένα αντικείμενο φακέλου για τον βασικό φάκελο στην καθορισμένη διαδρομή. Η διαδρομή πρέπει να περιέχει μόνο ονόματα φακέλων. Δεν πρέπει να περιλαμβάνονται ονόματα αρχείων, διαφορετικά θα παρουσιαστεί σφάλμα.

Η σύνταξη είναι:

GetFolder (folderspec)

123456 Sub FolderInfo ()Dim MyFSO As New FileSystemObject, Pth As String, Fo As FolderPth = "C: \ temp"Ρύθμιση Fo = MyFSO.GetFolder (Pth)MsgBox Fo.DateCreatedΤέλος υπο

Το αντικείμενο του φακέλου περιέχει διάφορες πληροφορίες στις οποίες μπορείτε να έχετε πρόσβαση. Σε αυτήν την περίπτωση, επιστρέφει την ημερομηνία δημιουργίας του φακέλου.

Μπορείτε επίσης να χρησιμοποιήσετε αυτήν τη μέθοδο για να ανακτήσετε όλα τα ονόματα αρχείων σε έναν δεδομένο φάκελο:

12345678 Υπο ονόματα αρχείων ()Dim MyFSO As New FileSystemObject, Pth As String, Fo As Folder, Fn As FilePth = "C: \ temp"Ρύθμιση Fo = MyFSO.GetFolder (Pth)Για κάθε Fn In Fo.FilesMsgBox Fn. ΌνομαΕπόμενο FnΤέλος υπο

Αυτός ο κωδικός θα επαναληφθεί μέσω του φακέλου "Temp" και θα εμφανίσει κάθε όνομα αρχείου που βρέθηκε.

GetParentFolderName

Αυτή η μέθοδος θα επιστρέψει το όνομα του φακέλου στο επόμενο επίπεδο επάνω στην ιεραρχία φακέλων.

Η σύνταξη είναι:

GetParentFolderName (μονοπάτι)

12345 Sub FolderName ()Dim MyFSO As New FileSystemObject, Pth As String, Fo As FolderPth = "C: \ users \ richard"MsgBox MyFSO.GetParentFolderName (Pth)Τέλος υπο

Αυτό θα επιστρέψει "Χρήστες" καθώς αυτός είναι ο "γονέας" για το φάκελο "richard".

Προγραμματισμός VBA | Το Code Generator λειτουργεί για εσάς!

Χρησιμοποιώντας τις μεθόδους «Δημιουργία»

Με το FSO μπορείτε να δημιουργήσετε έναν νέο φάκελο και διαδρομή και να δημιουργήσετε ένα αρχείο κειμένου.

ΔΗΜΙΟΥΡΓΩ φακελο

Μπορείτε να καθορίσετε ένα νέο όνομα διαδρομής φακέλου που θα δημιουργηθεί. Ένας κίνδυνος είναι ότι εάν ο φάκελος υπάρχει ήδη, τότε θα προκύψει σφάλμα. Μπορείτε να χρησιμοποιήσετε τη μέθοδο «FolderExists» για να διασφαλίσετε ότι αυτό δεν θα συμβεί.

Η σύνταξη είναι:

ΔΗΜΙΟΥΡΓΩ φακελο(όνομα φακέλου)

1234567 Sub CreateNewFolder ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "C: \ temp \ MyFolder"Εάν MyFSO.FolderExists (Pth) = Λάθος ΤότεMyFSO.CreateFolder (Pth)Τέλος εανΤέλος υπο

Αυτός ο κώδικας θα δημιουργήσει έναν νέο φάκελο που ονομάζεται "MyFolder" κάτω από την υπάρχουσα διαδρομή "C: \ temp".

CreateTextFile

Αυτή η μέθοδος σάς επιτρέπει να δημιουργήσετε ένα απλό αρχείο κειμένου και να γράψετε απευθείας σε αυτό.

Η σύνταξη είναι:

CreateTextFile (όνομα αρχείου, [ αντικαθιστά, [ unicode ]])

1234567 Sub CreateTextFile ()Dim MyFSO As New FileSystemObject, Pth As StringPth = "C: \ temp \ Myfile.txt"Ορισμός Fn = MyFSO.CreateTextFile (Pth, True)Fn. Γράψτε "Προσθέστε το δικό μου κείμενο εδώ" & vbLf & "Αυτή είναι η δεύτερη γραμμή"Fn. ΚλείσιμοΤέλος υπο

Αυτός ο κώδικας δημιουργεί ένα αρχείο κειμένου που ονομάζεται «Myfile.txt» στο φάκελο «Temp» της μονάδας δίσκου «C:» και στη συνέχεια γράφει δύο γραμμές κειμένου σε αυτό.

Σημειώστε ότι ένας χαρακτήρας ροής γραμμής είναι συνδεδεμένος στη συμβολοσειρά που γράφεται.

Εάν η διαδρομή στην οποία γράφετε δεν υπάρχει τότε θα προκύψει σφάλμα. Μπορείτε να χρησιμοποιήσετε τη μέθοδο «FolderExists» για να το ελέγξετε πριν δημιουργήσετε το αρχείο.

Υπάρχει μια προαιρετική παράμετρος για να αντικαταστήσετε το υπάρχον αρχείο εάν απαιτείται - αυτό μπορεί να είναι σωστό ή λάθος. Η προεπιλογή είναι True.

Χρησιμοποιώντας τις μεθόδους «Αντιγραφή»

Μπορείτε να χρησιμοποιήσετε αυτές τις μεθόδους για να αντιγράψετε ένα αρχείο ή έναν φάκελο σε άλλη τοποθεσία.

Προγραμματισμός VBA | Το Code Generator λειτουργεί για εσάς!

Αντιγραφή αρχείου

Αυτή η μέθοδος θα αντιγράψει ένα αρχείο από μια θέση φακέλου σε άλλη. Λάβετε υπόψη ότι το αντίγραφο θα αποτύχει εάν η τοποθεσία προορισμού έχει ορίσει το χαρακτηριστικό μόνο για ανάγνωση.

Η σύνταξη είναι:

Αντιγραφή αρχείου πηγή, προορισμός, [ αντικαθιστά ]

1234 Υπο CopyFile ()Dim MyFSO ως νέο FileSystemObjectMyFSO.CopyFile "C: \ temp \*. Txt", "C: \ temp \ myfolder \", TrueΤέλος υπο

Αυτός ο κώδικας θα δημιουργήσει ένα αντίγραφο όλων των αρχείων κειμένου (txt) στο ‘C: \ temp’ σε ‘C: \ temp \ myfolder \’, αντικαθιστώντας το αρχείο όπου είναι απαραίτητο. Η προεπιλεγμένη ρύθμιση για την αντικατάσταση είναι True.

Μπορείτε να χρησιμοποιήσετε έναν μπαλαντέρ αστερίσκου (*) για τα ονόματα αρχείων, αλλά δεν μπορείτε να χρησιμοποιήσετε ένα μπαλαντέρ ερωτήματος (?) Για να αντιπροσωπεύσετε μεμονωμένους χαρακτήρες.

CopyFolder

Μπορείτε να χρησιμοποιήσετε αυτήν τη μέθοδο για να αντιγράψετε έναν ολόκληρο φάκελο από τη μια θέση στην άλλη.

Η σύνταξη είναι:

CopyFolder πηγή, προορισμός, [ αντικαθιστά ]

1234 Sub CopyFolder ()Dim MyFSO ως νέο FileSystemObjectMyFSO.CopyFolder "C: \ temp \*", "C: \ users \ richard \"Τέλος υπο

Αυτός ο κώδικας αντιγράφει όλους τους φακέλους και τα αρχεία κάτω από το 'C: \ temp' σε 'C: \ users \ richard'. Ο νέος φάκελος που θα δημιουργηθεί θα είναι «C: \ users \ richard \ myfolder» καθώς «C: \ temp» είχε έναν φάκελο μέσα που ονομάζεται «myfolder».

Υπάρχουν τέσσερα πιθανά αποτελέσματα κατά τη χρήση αυτής της μεθόδου:

  • Εάν ο προορισμός δεν υπάρχει, τότε ο φάκελος προέλευσης και τα περιεχόμενα αντιγράφονται.
  • Εάν ο προορισμός υπάρχει ήδη, τότε εμφανίζεται ένα σφάλμα.
  • Εάν ο προορισμός είναι ένας φάκελος, τότε ο φάκελος προέλευσης και τα περιεχόμενά του θα αντιγραφούν. Θα προκύψει σφάλμα εάν η Αντικατάσταση έχει οριστεί σε Λάθος και υπάρχει ήδη αντίγραφο ενός αρχείου στον προορισμό.
  • Εάν ο προορισμός έχει οριστεί μόνο για ανάγνωση, θα προκύψει σφάλμα εάν η αντικατάσταση έχει οριστεί ως ψευδής.

Αυτή η μέθοδος σταματά στο πρώτο σφάλμα που συναντά. Δεν υπάρχει επαναφορά τυχόν ενεργειών που έχουν επιτύχει πριν εμφανιστεί το σφάλμα.

Χρησιμοποιώντας τις μεθόδους «Μετακίνηση»

Αυτές οι μέθοδοι μπορούν να χρησιμοποιηθούν για τη μεταφορά αρχείων ή φακέλων σε άλλες τοποθεσίες. Αυτό είναι το ίδιο με το κόψιμο από μια θέση και την επικόλληση σε άλλη τοποθεσία. Σημειώστε ότι εάν το αρχείο προς μετακίνηση είναι ανοιχτό, τότε η μέθοδος μετακίνησης θα αποτύχει με σφάλμα.

MoveFile

Αυτή η μέθοδος χρησιμοποιείται για τη μεταφορά ενός συγκεκριμένου αρχείου σε άλλη τοποθεσία. Οι μπαλαντέρ επιτρέπονται στο στοιχείο της τελευταίας διαδρομής της πηγής.

Η σύνταξη είναι:

MoveFile πηγή, προορισμός

1234 Sub MoveAFile ()Dim MyFSO ως νέο FileSystemObjectMyFSO.MoveFile "C: \ temp \*", "C: \ temp \ myfolder"Τέλος υπο

Αυτός ο κώδικας μεταφέρει όλα τα αρχεία που βρίσκονται στο ‘C: \ temp’ στο ‘C: \ temp \ myfolder’.

Οι φάκελοι προέλευσης και προορισμού πρέπει να υπάρχουν, καθώς ο φάκελος προορισμού δεν δημιουργείται αυτόματα.

Αυτή η μέθοδος σταματά στο πρώτο σφάλμα που συναντά. Δεν υπάρχει επαναφορά τυχόν ενεργειών που έχουν επιτύχει πριν εμφανιστεί το σφάλμα.

Προγραμματισμός VBA | Το Code Generator λειτουργεί για εσάς!

MoveFolder

Αυτή η μέθοδος μετακινεί έναν συγκεκριμένο φάκελο από τη μια θέση στην άλλη.

Η σύνταξη είναι:

MoveFolder (πηγή, προορισμός)

1234 Sub MoveAFolder ()Dim MyFSO ως νέο FileSystemObjectMyFSO.MoveFolder "C: \ temp \ myfolder", "C: \ temp \ mydestination"Τέλος υπο

Αυτός ο κώδικας μετακινεί το φάκελο "myfolder" και τα περιεχόμενα στο φάκελο "mydestination". Ο «myfolder» διαγράφεται αποτελεσματικά και δημιουργείται ο «mydestination», μαζί με τα περιεχόμενα του «myfolder».

Εάν ο φάκελος προορισμού υπάρχει ήδη, προκύπτει σφάλμα.

Χρησιμοποιώντας τις μεθόδους «Διαγραφή»

Αυτές οι μέθοδοι χρησιμοποιούνται για τη διαγραφή αρχείων ή φακέλων. Πρέπει να χρησιμοποιούνται με προσοχή καθώς δεν υπάρχει μέθοδος επαναφοράς ή αναίρεσης εάν κάτι πάει στραβά.

Διαγραφή φακέλου

Αυτό διαγράφει μεμονωμένα αρχεία ή μια ομάδα αρχείων χρησιμοποιώντας μπαλαντέρ.

Η σύνταξη είναι:

Διαγραφή φακέλου filespec, [ δύναμη ]

1234 Sub DeleteFiles ()Dim MyFSO ως νέο FileSystemObjectMyFSO.DeleteFile "C: \ temp \*"Τέλος υπο

Αυτός ο κωδικός θα διαγράψει όλα τα αρχεία στο φάκελο ‘C: \ temp’

Η παράμετρος Force είναι προαιρετική και έχει οριστεί σε True ή False. Εάν έχει οριστεί σε True, τότε τα αρχεία μόνο για ανάγνωση θα διαγραφούν. Η προεπιλογή είναι False.

DeleteFolder

Αυτή η μέθοδος διαγράφει έναν καθορισμένο φάκελο και τα περιεχόμενά του.

Η σύνταξη είναι:

DeleteFolder folderspec, [ δύναμη ]

1234 Sub DeleteFolders ()Dim MyFSO ως νέο FileSystemObjectMyFSO.DeleteFolder "C: \ temp \ MyDestination"Τέλος υπο

Αυτός ο κωδικός θα διαγράψει το φάκελο "MyDestination" και όλα τα αρχεία μέσα σε αυτόν. Ο φάκελος "temp" θα παραμείνει.

Η παράμετρος Force είναι προαιρετική και έχει οριστεί σε True ή False. Εάν έχει οριστεί σε True, τότε οι φάκελοι μόνο για ανάγνωση θα διαγραφούν. Η προεπιλογή είναι False.

Οι μπαλαντέρ μπορούν να χρησιμοποιηθούν στο τελευταίο στοιχείο της διαδρομής. Εάν ο φάκελος δεν βρεθεί, θα εμφανιστεί σφάλμα.

Αυτή η μέθοδος σταματά στο πρώτο σφάλμα που συναντά. Δεν υπάρχει επαναφορά τυχόν ενεργειών που έχουν επιτύχει πριν εμφανιστεί το σφάλμα.

Προγραμματισμός VBA | Το Code Generator λειτουργεί για εσάς!

Άλλες μέθοδοι στο FSO

OpenAsTextStream.

Αυτή η μέθοδος ανοίγει ένα καθορισμένο αρχείο ως αντικείμενο ροής κειμένου και του επιτρέπει να διαβαστεί ή να γραφτεί. Το πλεονέκτημα αυτής της μεθόδου είναι ότι μπορεί να ανοίξει οποιονδήποτε τύπο αρχείου και να εξαγάγει το διαθέσιμο κείμενο.

Η σύνταξη είναι:

OpenAsTextStream ([ iomode, [ μορφή ]])

Η παράμετρος «iomode» επιτρέπει μόνο ανάγνωση (1), ανάγνωση/εγγραφή (2) και προσθήκη (8). Η παράμετρος ανάγνωσης/εγγραφής αντικαθιστά το αρχείο.

Η παράμετρος "μορφοποίηση" έχει οριστεί σε -2 για προεπιλογή συστήματος, -1 για να ανοίξει το αρχείο ως Unicode και 0 για να ανοίξει το αρχείο ως ASCII (American Standard Code for Information Interchange).

1234567891011 Sub TextStream ()Dim MyFSO ως νέο FileSystemObjectΡύθμιση f = MyFSO.GetFile ("C: \ temp \ myfile.txt")Ορίστε ts = f.OpenAsTextStream (2)ts.Γράψτε "Το νέο μου κείμενο"ts.ΚλείσιμοΟρίστε ts = f.OpenAsTextStream (1)s = ts.ReadLineMsgBox sts.ΚλείσιμοΤέλος υπο

Αυτός ο κώδικας λαμβάνει ένα υπάρχον αρχείο κειμένου και το δημιουργεί ως αντικείμενο χρησιμοποιώντας τη μέθοδο "GetFile". Στη συνέχεια, ανοίγει τη ροή κειμένου ως ανάγνωση / εγγραφή (2) και γράφει μια γραμμή κειμένου. Στη συνέχεια, το αρχείο κλείνει και ανοίγει ξανά ως αναγνωσμένο (1) και διαβάζεται μια γραμμή από αυτό, η οποία στη συνέχεια εμφανίζεται ως πλαίσιο μηνυμάτων.

Σημειώστε ότι η γραμμή ανάγνωσης πρέπει να τοποθετηθεί σε μια μεταβλητή προτού εμφανιστεί σε ένα πλαίσιο μηνυμάτων.

BuildPath

Αυτή η μέθοδος θα προσθέσει ένα φάκελο ή όνομα αρχείου στο τέλος μιας υπάρχουσας διαδρομής φακέλου. Αυτό δημιουργεί μόνο μια συμβολοσειρά κειμένου και δεν δημιουργεί τον νέο φάκελο.

Η σύνταξη είναι:

BuildPath (μονοπάτι, όνομα)

12345 Sub BuildPth ()Dim MyFSO ως νέο FileSystemObjectnp = MyFSO.BuildPath ("C: \ temp", "ANewFolder")MsgBox npΤέλος υπο

Αυτό θα εμφανίσει το 'C: \ temp \ ANewFolder'. Ωστόσο, εάν θέλετε να χρησιμοποιήσετε πραγματικά αυτόν τον φάκελο, πρέπει να χρησιμοποιήσετε τη μέθοδο "CreateFolder".

OpenTextFile

Αυτή η μέθοδος επιτρέπει το άνοιγμα και ανάγνωση αρχείων από ή εγγραφή σύμφωνα με τις καθορισμένες παραμέτρους. Λειτουργεί με παρόμοιο τρόπο με τη μέθοδο OpenAsTextStream.

Η σύνταξη είναι:

OpenTextFile (όνομα αρχείου, [ iomode, [ δημιουργώ, [ μορφή ]]])

Η παράμετρος «iomode» επιτρέπει το ForReading, το ForWriting και το ForAppending. Η παράμετρος ForWriting αντικαθιστά το αρχείο.

Η παράμετρος "δημιουργία" είναι μια τιμή Boolean. True σημαίνει ότι θα δημιουργηθεί ένα νέο αρχείο εάν δεν υπάρχει το καθορισμένο όνομα αρχείου. Λάθος σημαίνει ότι δεν θα δημιουργηθεί αρχείο αν δεν βρεθεί το όνομα αρχείου. Η προεπιλογή είναι False.

Η παράμετρος «μορφοποίησης» μπορεί να οριστεί σε TristateFalse, TristateMixed, TristateTrue και TristateUseDefault ανάλογα με το αν το αρχείο είναι ASCII ή Unicode.

1234567 Υπο OpenTxtFile ()Dim MyFSO ως νέο FileSystemObjectΟρισμός ts = MyFSO.OpenTextFile ("C: \ temp \ myfile.txt", ForReading, False, TristateUseDefault)s = ts.ReadLineMsgBox sts.ΚλείσιμοΤέλος υπο

Αυτός ο κώδικας θα διαβάσει μια γραμμή από το αρχείο κειμένου "myfile.txt".

Ένα πλεονέκτημα που έχει η μέθοδος OpenTextFile έναντι του OpenAsTextStreamMethod είναι ότι έχει αναπτυσσόμενα μενού για τις παραμέτρους, οι οποίες είναι πιο σημαντικές από την προσπάθεια να θυμηθούμε τις κατάλληλες αριθμητικές τιμές για τις διάφορες επιλογές παραμέτρων.

Προγραμματισμός VBA | Το Code Generator λειτουργεί για εσάς!

Ιδιότητες του FSO

Οδηγίες

Αυτή η ιδιότητα περιέχει μια συλλογή από διαθέσιμες μονάδες δίσκου στον υπολογιστή σας.

1234567 Sub Drv ()Dim MyFSO As New FileSystemObject, d As DriveΟρίστε Dr = MyFSO.DrivesΓια κάθε δ Σε ΔρMsgBox d.DriveLetterΕπόμενο δΤέλος υπο

Αυτός ο κωδικός θα επιστρέψει κάθε γράμμα μονάδας δίσκου που είναι διαθέσιμο στον υπολογιστή σας.

Ονομα

Αυτό επιστρέφει το όνομα ενός καθορισμένου αρχείου ή φακέλου.

123456789 ΥπότιτλοΠαράδειγμα ()Dim MyFSO ως νέο FileSystemObjectΡύθμιση f = MyFSO.GetFile ("C: \ temp \ myfile.txt")i = f.Name & "on Drive" & UCase (f.Drive) & vbCrLfi = i & "Δημιουργήθηκε:" & f.DateCreated & vbCrLfi = i & "Τελευταία πρόσβαση:" & f.DateLastAccessed & vbCrLfi = i & "Τελευταία τροποποίηση:" & f.DateLastModifiedMsgBox iΤέλος υπο

Αυτός ο κωδικός θα δώσει το όνομα του αρχείου και πληροφορίες σχετικά με αυτό χρησιμοποιώντας την ιδιότητα Drive.

Μονοπάτι

Η ιδιότητα Διαδρομή θα διαχωρίσει τη διαδρομή από μια προδιαγραφή αρχείου.

123456789 Sub PathExample ()Dim MyFSO ως νέο FileSystemObjectΡύθμιση f = MyFSO.GetFile ("C: \ temp \ myfile.txt")i = f.Path & f.Name & "on Drive" & UCase (f.Drive) & vbCrLfi = i & "Δημιουργήθηκε:" & f.DateCreated & vbCrLfi = i & "Τελευταία πρόσβαση:" & f.DateLastAccessed & vbCrLfi = i & "Τελευταία τροποποίηση:" & f.DateLastModifiedMsgBox iΤέλος υπο

Αυτό το παράδειγμα λειτουργεί με τον ίδιο τρόπο όπως το παράδειγμα ονόματος, εκτός από το ότι παρέχει τώρα τη διαδρομή για το αρχείο.

Προγραμματισμός VBA | Το Code Generator λειτουργεί για εσάς!

Μέγεθος

Η ιδιότητα Μέγεθος θα δώσει το μέγεθος ενός φακέλου ή ενός αρχείου.

12345 Sub FSize ()Dim MyFSO ως νέο FileSystemObjectΡύθμιση f = MyFSO.GetFolder ("C: \ temp \")MsgBox f. ΜέγεθοςΤέλος υπο

Αυτός ο κωδικός παραπάνω θα επιστρέψει το μέγεθος του φακέλου ‘C: \ temp \’.

12345 Sub FSize ()Dim MyFSO ως νέο FileSystemObjectΡύθμιση f = MyFSO.GetFile ("C: \ temp \ myfile.txt")MsgBox f. ΜέγεθοςΤέλος υπο

Αυτός ο παραπάνω κώδικας θα επιστρέψει το μέγεθος του αρχείου "myfile.txt".

Τύπος

Η ιδιότητα τύπου θα επιστρέψει το κείμενο για τον τύπο αρχείου ή φακέλου.

12345 Sub FType ()Dim MyFSO ως νέο FileSystemObjectΡύθμιση f = MyFSO.GetFolder ("C: \ temp \")MsgBox f. ΤύποςΤέλος υπο

Αυτός ο κωδικός παραπάνω θα επιστρέψει το κείμενο "Φάκελος αρχείου".

12345 Sub FType ()Dim MyFSO ως νέο FileSystemObjectΡύθμιση f = MyFSO.GetFile ("C: \ temp \ myfile.txt")MsgBox f. ΤύποςΤέλος υπο

Αυτός ο κωδικός παραπάνω θα επιστρέψει το κείμενο "Έγγραφο κειμένου".

Σημειώστε τη χρήση των "GetFolder" και "GetFile" σε κάθε παράδειγμα.

Θα βοηθήσει στην ανάπτυξη του τόπου, μοιράζονται τη σελίδα με τους φίλους σας

wave wave wave wave wave