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ä
  2. Koodi Kuvaus.
  3. yhteenveto

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.