Πώς να λάβετε μια λίστα αρχείων, συμπεριλαμβανομένων των υποφακέλων, και μια λίστα φακέλων χρησιμοποιώντας VBA (μακροεντολή Excel).
Ημερομηνία δημοσίευσης:12 Ιουλίου 2022.
INFOMARTION > Πώς να λάβετε μια λίστα αρχείων, συμπεριλαμβανομένων των υποφακέλων, και μια λίστα φακέλων χρησιμοποιώντας VBA (μακροεντολή Excel).
Επισκόπηση.
Θα ήθελα να περιγράψω πώς να λάβω μια λίστα αρχείων και μια λίστα φακέλων, συμπεριλαμβανομένων των υποφακέλων, χρησιμοποιώντας VBA (μακροεντολή του Excel). Το άρθρο απευθύνεται σε άτομα που θέλουν να προγραμματίσουν τις ακόλουθες εργασίες
- Θέλω να λάβω μια λίστα όλων των αρχείων ή φακέλων κάτω από ένα φάκελο με τις πλήρεις διαδρομές τους.
- Θέλετε να εκτελέσετε επεξεργασία σε βρόχο για αρχεία ή φακέλους κάτω από ένα φάκελο.
Πίνακας περιεχομένων
1. Μέθοδος προγραμματισμού
Παραδείγματα αναφοράς του προγραμματισμού παρατίθενται παρακάτω.
Καθώς δημιουργείται στη Function, θα ήθελα να την αντιγράψω ως έχει και οι κλήσεις μεθόδων να γίνονται από την Sub.
'Parameter Examples
'## filePath C:\Users\user\Desktop\test\
'## kind false:folder, true:file
'## list
Function getFolderOrFile(filePath As String, kind As Boolean, list As Collection) As Collection
'delete\
Dim filePathEnd As String
filePathEnd = Right(filePath, 1)
If filePathEnd = "\" Then
filePath = Left(filePath, Len(filePath) - 1)
End If
'Folder existence check
Dim result As String
result = Dir(filePath, vbDirectory)
If result = "" Then
MsgBox "File does not exist!"
Exit Function
End If
If kind Then
Dim buf As String
buf = Dir(filePath & "\*.*")
Do While buf <> ""
list.Add filePath & "\" & buf
buf = Dir()
Loop
Else
list.Add filePath
End If
Dim folder As Object
With CreateObject("Scripting.FileSystemObject")
For Each folder In .GetFolder(filePath).SubFolders
getFolderOrFile folder.Path, kind, list
Next folder
End With
End Function
Για να το χρησιμοποιήσετε, δώστε τα ακόλουθα ως ορίσματα.
- filePath・・・κατάλογο. Παράδειγμα.)C:\Users\user\Desktop\test
- kind・・・Περάστε true, false. Εάν είναι True, επιστρέφει μια λίστα αρχείων. Εάν είναι false, επιστρέφει μια λίστα φακέλων.
- list・・・Η συλλογή χρησιμοποιείται για την αποθήκευση των αποτελεσμάτων. Ένα παράδειγμα εφαρμογής δίνεται παρακάτω.
Ένα παράδειγμα υλοποίησης μιας πραγματικής κλήσης συνάρτησης παρουσιάζεται παρακάτω.
Sub test()
Dim list As Collection
Set list = New Collection
getFolderOrFile "C:\Users\user\Desktop\test", False, list
Dim item As Variant
For Each item In list
'------TODO------
ThisWorkbook.Worksheets(1).Cells(1, 1).Value = item
Next
End Sub
Η κλήση του getFolderOrFile θα αποθηκεύσει μια λίστα αρχείων ή μια λίστα φακέλων στη λίστα. Το παράδειγμα υλοποίησης είναι False, οπότε η λίστα των φακέλων αποθηκεύεται.
Περιγράψτε τη διαδικασία που θέλετε να κάνετε στο τμήμα "TODO" της εντολής For. ITEM μπορεί να αντιμετωπιστεί ως μεταβλητή String.
Η πηγή αναφοράς είναι η διαδικασία ορισμού της αποκτηθείσας λίστας στο A1 στο Excel. (Η διαδικασία αντικαθιστά επανειλημμένα το ίδιο κελί.)
2. Κωδικός Περιγραφή.
Εδώ τελειώνουν οι οδηγίες χρήσης του συστήματος και ακολουθεί η επεξήγηση του κώδικα.
Οι λεπτομέρειες φαίνονται στον κώδικα, αλλά το σημείο κλειδί είναι η περαιτέρω κλήση της μεθόδου getFolderOrFile στη μέθοδο getFolderOrFile.
Κατά τη διαδικασία αναζήτησης φακέλων, η διαδικασία επαναλαμβάνεται περαιτέρω με την κλήση της διαδικασίας αναζήτησης φακέλων, η οποία είναι ένας μηχανισμός αναζήτησης όλων των φακέλων.
Με την κλήση της δικής της μεθόδου, καλεί επανειλημμένα τη δική της μέθοδο όσο βρίσκεται ο φάκελος, αναζητώντας όλους τους φακέλους.
3. περίληψη
Εάν χρειάζεστε βοήθεια σχετικά με τον τρόπο λήψης μιας λίστας αρχείων και μιας λίστας φακέλων, συμπεριλαμβανομένων των υποφακέλων, χρησιμοποιώντας VBA (μακροεντολές του Excel), ανατρέξτε σε αυτήν την ενότητα.
Σας ευχαριστούμε που παρακολουθήσατε μέχρι το τέλος.
■INFORMATION
Κάντε κλικ εδώ για να μεταβείτε στην αρχική σελίδα ΠΛΗΡΟΦΟΡΙΕΣ.
■PROFILE
Κάντε κλικ εδώ για ένα προφίλ.
■Στοιχεία επικοινωνίας.
Για ερωτήσεις σχετικά με το άρθρο, παρακαλούμε επικοινωνήστε μαζί μας εδώ.