Uneori trebuie să combinăm foi din diferite registre de lucru Excel pentru a crea un nou raport sau un fișier de date consolidate. O astfel de operațiune poate fi făcută manual, folosind instrumente standard MS Excel, dar poate dura mult timp și efort. Să luăm în considerare modul în care putem automatiza acest proces și cum putem accelera munca cu rapoarte.
De exemplu, avem multe cărți de lucru Excel și vrem să facem colecție de fișe de lucru din toate cărțile într-un singur fișier. Pentru a face acest lucru, deschideți registrul de lucru în care doriți să colectați toate foile și adăugați următorul cod macro.
Cu registrul de lucru Excel deschis, unde doriți să colectați toate foile, deschideți Visual Basic Editor (Alt+F11), inserați modulul VBA ( Insert - Module ) și copiați acest cod macro acolo:
Sub CombineWorkbooks() 'moonexcel.com.ua Dim FilesToOpen Dim x As Integer On Error GoTo ErrHandler Application.ScreenUpdating = False FilesToOpen = Application.GetOpenFilename _ (FileFilter:="Microsoft Excel Files (*.xls), *.xls", _ MultiSelect:=True, Title:="Files to Merge") If TypeName(FilesToOpen) = "Boolean" Then MsgBox " Nu a fost selectat niciun fișier! " GoTo ExitHandler End If x = 1 While x <= UBound(FilesToOpen) Workbooks.Open Filename:=FilesToOpen(x) Sheets().Move After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) x = x + 1 Wend ExitHandler: Application.ScreenUpdating = True Exit Sub ErrHandler: MsgBox Err.Description Resume ExitHandler End Sub
După aceea, puteți reveni la Excel și puteți rula macrocomandă prin meniu Tools - Macro - Macros (Alt+F8) . Va apărea o casetă de dialog, în care trebuie să selectați unul sau mai multe fișiere (ținând apăsat Ctrl), ale căror foi dorim să le adăugăm la registrul de lucru curent.
Dacă utilizați o altă extensie de fișier Excel (de exemplu, *.xlsx, *.xlsm, *.xlsb etc.), atunci va trebui să faceți modificările corespunzătoare la a noua linie a codului macrocomenzii noastre.