Loetlege failid kaustas, kasutades VBA -d Microsoft Excelis

Anonim

Selles artiklis loome makro, et loetleda kõik kaustas olevad failid.

Makro käivitamisel kuvatakse faili nimi koos failiteega alates lahtrist A17.

Loogiline seletus

Selles artiklis oleme loonud kaks makrot, alamkaustafailid ja saamisefailide_kausta.
Makro „alamkausta_failid” võtab sisenditeks kausta tee ja loogilise väärtuse ning tagastab kaustas oleva failinime.

„Get_filelist_in_folder” kasutatakse makro „subfolder_files” kutsumiseks. See annab makrole kausta tee väärtuse koos tõeväärtusega „true”. Samuti, kui alamkaustades olevad failinimed on kohustuslikud, määrame loogilise väärtuse „true”.

Koodi selgitus

folder_path = Sheet1.TextBox1.Value
Ülaltoodud koodi kasutatakse tekstiväljast stringiväärtuse eraldamiseks.

Helista alamkaustafailidele (kausta tee, tõene)
Ülaltoodud koodi kasutatakse makro "alamkaustafailid" kutsumiseks. See määrab kausta tee ja määrab atribuudi „include_subfolder” tõeseks.

Määra fso = CreateObject ("scripting.filesystemobject")
Ülaltoodud koodi kasutatakse failisüsteemi objekti loomiseks.

Määra alamkaust1 = fso.getfolder (kausta tee)
Ülaltoodud koodi kasutatakse määratud kausta objekti loomiseks.

Iga kausta jaoks1 Alamkaustas1.alamkaustad
Helista alamkausta_failidele (kaust1, tõene)
Edasi
Ülaltoodud koodi kasutatakse kõigi põhikausta alamkaustade vaatamiseks.

Rež (kaustatee1 ja "*.xlsx")
Ülaltoodud koodi kasutatakse Exceli faili nime saamiseks.

Kuigi failinimi ""
loendus1 = loendamine1 + 1
ReDim Preserve failisari (1 loendamiseks1)
filearray (count1) = failinimi
failinimi = Dir ()
Wend

Ülaltoodud koodi kasutatakse massiivi loomiseks, mis koosneb kõigist kaustas sisalduvatest failinimedest.

I = 1 jaoks UBound (failiriba)
Lahtrid (eelmisel korral, 1). Väärtus = kaustarada1 ja failiriba (i)
lastrow = lastrow + 1
Edasi

Ülaltoodud koodi kasutatakse töövihikule massiivi failinime määramiseks.

Palun järgige koodi allpool

 Valik Selgesõnalised alamkaustafailid (kaustatee1 variandina, valikuline kaasamise alamkaust kui loogiline) "Kontrollimine, kas lisada alamkaust või mitte If include_subfolder then" Deklareerivad muutujad Dim filename, filearray () String Dim lastrow, count1, i As Integer tagasilöök viimase märgina Kui õige (kaustatee1, 1) "\" Siis kaustatee1 = kaustarada1 & "\" Lõpp kui '' Esimese faili failinime hankimine määratud kausta tee failinimi = Dir (kaustarada1 & "*.xlsx") ' Viimase lahtri reanumbri saamine lastrow = ActiveCell.SpecialCells (xlCellTypeLastCell) .Rida + 1 count1 = 0 'Kõigi kaustas olevate failide sirvimine Kuigi failinimi "" count1 = count1 + 1 ReDim Säilita failimassiiv (1 Loendamiseks1) filearray ( count1) = failinimi failinimi = Dir () Wend On Error GoTo last 'Faili nime lisamine töövihikusse Lõpp Kui viimane: lõpeta alam -alamfaili_faililoend_kaust () 'Muutujate deklareerimine Dim folder_path kui string Dim fso kui objekt \ "Siis folder_path = folder_path &" \ "End If 'Alamkausta_failide makro kutsumine Helista alamkausta_failid (kausta_tee, tõene)' Failisüsteemiobjekti objekti loomine Määra fso = CreateObject (" scripting.filesystemobject ") Määra alamkaust1 = fso.getfolder (kausta_tee) 'Iga alamkausta läbimine Iga kausta jaoks 

Kui teile see blogi meeldis, jagage seda oma sõpradega Facebookis. Lisaks saate meid jälgida Twitteris ja Facebookis.

Tahaksime sinust kuulda, andke meile teada, kuidas saaksime oma tööd paremaks muuta ja teie jaoks paremaks muuta. Kirjuta meile meilisaidile