Klical me je prijatelj, ki je želel združiti več Excelovih datotek v en Excelov delovni zvezek. V mapi je imel veliko datotek in želel je združiti vse delovne liste iz vseh delovnih zvezkov v en sam delovni zvezek.
Čeprav je to mogoče narediti ročno, bi bilo to zamudno in nagnjeno k napakam.
Vendar lahko preprosta koda VBA to naredi v nekaj sekundah.
Združite več datotek Excel v eno datoteko
Tukaj je koda, ki lahko združi več Excelovih delovnih zvezkov v določeni mapi v en Excelov delovni zvezek:
Sub ConslidateWorkbooks () 'Ustvaril Sumit Bansal iz https://trumpexcel.com Dim FolderPath As String Dim Ime datoteke kot String Dim Sheet Kot delovni list Application.ScreenUpdating = False FolderPath = Environ ("userprofile") & "DesktopTest" Filename = Dir ( FolderPath & ". (Ime datoteke). Zaprite Ime datoteke = Dir () Loop Application.ScreenUpdating = True End Sub
Kako uporabljati to kodo?
Tukaj je nekaj korakov za uporabo te kode:
- Vse datoteke Excel, ki jih želite združiti, vstavite v mapo. Za namene te vadnice sem ustvaril mapo z imenom Test in v njej je šest datotek (po 4 Excelove delovne zvezke ter po 1 Power Point in Word).
- Odprite nov delovni zvezek Excel.
- Pritisnite ALT + F11 (ali pojdite na Razvijalec -> Koda -> Visual Basic). S tem se odpre urejevalnik Visual Basic.
- V urejevalniku VB v urejevalniku projektov z desno tipko miške kliknite kateri koli predmet delovnega zvezka in pojdite na Vstavi -> Modul. To bo vstavilo modul za delovni zvezek.
- Dvokliknite modul. Odprlo se bo okno za kodo na desni.
- Kopirajte in prilepite zgornjo kodo v okno za kodo.
- V kodi morate spremeniti naslednjo vrstico kode:
FolderPath = Environment ("userprofile") & "DesktopTest"
V tej vrstici spremenite del v dvojnih narekovajih (označen z oranžno) z lokacijo mape, v kateri imate datoteke, ki jih želite združiti. V zgornji kodi je mapa na namizju. Če ga imate na kakšnem drugem mestu, pot določite tukaj.
- Kazalec postavite kamor koli v kodi in kliknite zeleni gumb za predvajanje v možnostih Orodne vrstice (ali pritisnite tipko F5).
To bo zagnalo kodo in vsi delovni listi iz vseh Excelovih datotek v mapi bodo združeni v en sam delovni zvezek.
Kako deluje ta koda?
- Koda uporablja funkcijo DIR za pridobivanje imen datotek iz podane mape.
- Naslednja vrstica dodeli prvo ime datoteke excel spremenljivki "Ime datoteke".
Ime datoteke = Dir (FolderPath & “*.xls*”) - Nato se zanka Do While uporablja za preverjanje, ali so vse datoteke pokrite.
- V zanki »Do While« se zanka »For Each« uporablja za kopiranje vseh delovnih listov v delovni zvezek, v katerem izvajamo kodo.
- Na koncu Do Loopa se uporabi naslednja vrstica kode: Filename = Dir (). Spremenljivki Filename dodeli naslednje ime datoteke Excel in zanka se znova zažene.
- Ko so vse datoteke pokrite, funkcija DIR vrne prazen niz, ko se zanka konča.
Tu je razlaga funkcije DIR v knjižnici MSDN:
Dir vrne prvo ime datoteke, ki se ujema z imenom poti. Če želite pridobiti dodatna imena datotek, ki se ujemajo z imenom poti, pokličite Dir spet brez argumentov. Ko se imena datotek ne ujemajo več, Dir vrne niz ničelne dolžine (“”).
Ste že kdaj poskusili kaj takega z uporabo VBA? Delite, kar ste storili, in vsi se lahko iz tega naučimo.
Prihranite noro količino časa z uporabo VBA. Oglejte si Excel VBA TEČAJ.