V tem članku bomo ustvarili makro za seznam vseh datotek v mapi.
Pri zagonu makra se bo ime datoteke skupaj s potjo datoteke prikazalo od celice A17.
Logična razlaga
V tem članku smo ustvarili dva makra, "datoteke podmape" in "pridobivanje_filelist_v_mapi".
Makro “subfolder_files” vzame pot do mape in logično vrednost kot vhodne podatke in vrne ime datoteke v mapi.
“Getting_filelist_in_folder” se uporablja za klicanje makra “subfolder_files”. Zagotavlja vrednost poti mape do makra, pri čemer je logična vrednost nastavljena na »true«. Ko so potrebna imena datotek v podmapah, dodelimo logično vrednost 'true'.
Razlaga kode
folder_path = Sheet1.TextBox1.Vrednost
Zgornja koda se uporablja za izvlečenje vrednosti niza iz polja z besedilom.
Pokliči datoteke podmape (pot mape, True)
Zgornja koda se uporablja za klicanje makra »datoteke podmape«. Določi pot mape in nastavi vrednost »include_subfolder« na true.
Nastavi fso = CreateObject ("scripting.filesystemobject")
Zgornja koda se uporablja za ustvarjanje predmeta datotečnega sistema.
Nastavi podmapo 1 = fso.getfolder (pot do mape)
Zgornja koda se uporablja za ustvarjanje predmeta definirane mape.
Za vsako mapo 1 V podmapi 1. podmape
Pokliči datoteke podmape (mapa1, res)
Naslednji
Zgornja koda se uporablja za pregledovanje vseh podmap v glavni mapi.
Dir (folderpath1 & "*.xlsx")
Zgornja koda se uporablja za pridobitev imena datoteke excel.
Medtem ko je ime datoteke ""
count1 = count1 + 1
Datotečni niz ReDim Preserve (1 Za štetje1)
filearray (count1) = ime datoteke
ime datoteke = Dir ()
Wend
Zgornja koda se uporablja za ustvarjanje matrike, ki je sestavljena iz vseh imen datotek v mapi.
Za i = 1 Za UBound (datotečni niz)
Celice (lastrowrow, 1) .Vrednost = folderpath1 & filearray (i)
lastrow = lastrow + 1
Naslednji
Zgornja koda se uporablja za dodelitev imena datoteke znotraj matrike delovnemu zvezku.
Za kodo sledite spodaj
Možnost Explicit Sub subfolder_files (folderpath1 As Variant, Optional include_subfolder As Boolean) 'Preverjanje, ali vključiti podmapo ali ne poševnica kot zadnji znak If Right (folderpath1, 1) "\" Potem folderpath1 = folderpath1 & "\" End If "Pridobivanje imena datoteke prve datoteke v definirani poti mape ime datoteke = Dir (pathp folder1 &"*.xlsx ") ' Pridobivanje številke vrstice zadnje celice lastrow = ActiveCell.SpecialCells (xlCellTypeLastCell) .Row + 1 count1 = 0 'Ponavljanje po vseh datotekah v mapi Medtem ko je ime datoteke "" count1 = count1 + 1 ReDim Shrani datotečni niz (1 Za štetje1) datotečni niz ( count1) = ime datoteke ime datoteke = Dir () Wend On Napaka Pojdi na zadnji 'Dodajanje imena datoteke v delovni zvezek Za i = 1 V celico UBound (filearray) Celice (lastrowrow, 1) .Vrednost = pathpath1 in filearray (i) lastrow = lastrow + 1 Naprej Konec, če je zadnji: Končaj Sub Sub get_filelist_in_folder () 'Razglasitev spremenljivk Zatemni mapo_pot kot niz Niz fso kot objekt, mapo1, podmapo1 kot objekt' Pridobivanje poti do mape folder_path = Sheet1.TextBox1.Value 'Preverjanje, ali pot mape vsebuje poševnico kot zadnji znak If Right (folder_path, 1) " \ "Potem mapa_pot = mapa_pot &" \ "Konec Če" Klicanje mape podmape_datoteke Pokliči datoteke podmape (mapa_pot, True) 'Ustvarjanje predmeta predmeta datotečnega sistema Nastavi fso = CreateObject ("scripting.filesystemobject") Nastavi podmapo1 = fso.getfolder (mapa_pot) 'Ponavljanje po vsaki podmapi Za vsako mapo 1 V podmapi 1. podmape Pokličite datoteke podmape (mapa1, True) Naslednji konec
Če vam je bil ta blog všeč, ga delite s prijatelji na Facebooku. Prav tako nam lahko sledite na Twitterju in Facebooku.
Radi bi slišali od vas, nam sporočite, kako lahko izboljšamo svoje delo in ga izboljšamo za vas. Pišite nam na spletnem mestu e -pošte