Kuinka saada luettelo tiedostoista, mukaan lukien alikansiot, ja luettelo kansioista käyttämällä VBA:ta (Excel-makro).
Julkaisupäivä:12. heinäkuuta 2022.
INFOMARTION > Kuinka saada luettelo tiedostoista, mukaan lukien alikansiot, ja luettelo kansioista käyttämällä VBA:ta (Excel-makro).
Yleiskatsaus.
Haluaisin kuvata, miten saada luettelo tiedostoista ja kansioista, mukaan lukien alikansiot, käyttämällä VBA:ta (Excel-makro). Artikkeli on tarkoitettu henkilöille, jotka haluavat ohjelmoida seuraavat tehtävät
- Haluan saada luettelon kaikista kansion alla olevista tiedostoista tai kansioista ja niiden täydellisistä poluista.
- Haluat suorittaa käsittelyn silmukassa kansiossa oleville tiedostoille tai kansioille.
Sisällysluettelo
1. Ohjelmointimenetelmä
Seuraavassa annetaan esimerkkejä ohjelmoinnista.
Koska se on luotu funktiossa Function, haluaisin, että se kopioidaan sellaisenaan ja että metodikutsut tehdään Subista.
'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
Jos haluat käyttää sitä, anna seuraavat argumentit.
- filePath・・・hakemisto. Esimerkki.)C:\Users\user\Desktop\test
- kind・・・Pass true, false. Jos True, palauttaa luettelon tiedostoista. Jos false, palauttaa luettelon kansioista.
- list・・・Kokoelmaa käytetään tulosten tallentamiseen. Jäljempänä esitetään esimerkkitoteutus.
Alla on esimerkki varsinaisen Function-kutsun toteutuksesta.
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
Kutsu getFolderOrFile tallentaa luettelon tiedostoista tai luettelon kansioista luetteloon. Toteutusesimerkki on False, joten kansioluettelo tallennetaan.
Kuvaile prosessi, jonka haluat tehdä For-lausekkeen TODO-osiossa. ITEM voidaan käsitellä merkkijonomuuttujana.
Vertailulähde on prosessi, jossa hankittu luettelo asetetaan Excelin A1-luetteloon. (Prosessi korvaa toistuvasti saman solun.)
2. Koodi Kuvaus.
Järjestelmän käyttöohjeet päättyvät tähän, ja sen jälkeen seuraa koodin selitys.
Yksityiskohdat ovat nähtävissä koodissa, mutta tärkeintä on kutsu getFolderOrFile-metodin getFolderOrFile-kutsuun.
Kansioiden hakuprosessissa prosessi toistetaan edelleen kutsumalla kansioiden hakuprosessia, joka on kaikkien kansioiden hakumekanismi.
Kutsumalla omaa metodiaan se kutsuu toistuvasti omaa metodiaan niin kauan kuin kansio löytyy, etsien kaikkia kansioita.
3. yhteenveto
Jos tarvitset apua siihen, miten saat luettelon tiedostoista ja kansioista, mukaan lukien alikansiot, käyttämällä VBA:ta (Excel-makroja), tutustu tähän osioon.
Kiitos, että katsoitte loppuun asti.
■INFORMATION
Klikkaa tästä siirtyäksesi TIETOJEN yläsivulle.
■PROFILE
Klikkaa tästä saadaksesi profiilin.
■Yhteystiedot.