Kopirajte raspon iz svake radne knjige u mapu pomoću VBA u programu Microsoft Excel

Sadržaj

U ovom ćemo članku stvoriti makro za kopiranje podataka iz više radnih knjiga u mapi u novu radnu knjigu.

Napravit ćemo dva makronaredbe; jedan će makro kopirati samo zapise iz prvog stupca u novu radnu knjigu, a drugi će makronaredbu kopirati sve podatke u njega.

Sirovi podaci za ovaj primjer sastoje se od evidencije o posjećenosti zaposlenika. U testnoj mapi imamo više Excel datoteka. Nazivi datoteka Excel datoteka predstavljaju određeni datum u "ddmmyyyy" formatu.

Svaka Excel datoteka sadrži datum, ID zaposlenika i naziv zaposlenika onih zaposlenika koji su bili prisutni tog dana.

Napravili smo dva makronaredbe; “CopyingSingleColumnData” i “CopyingMultipleColumnData”. Makronaredba “CopyingSingleColumnData” kopirat će samo zapise iz prvog stupca svih datoteka u mapi u novu radnu knjigu. Makronaredba “CopyingMultipleColumnData” kopirat će sve podatke iz svih datoteka u mapi u novu radnu knjigu.

Makronaredbu “CopyingSingleColumnData” možete izvršiti klikom na gumb “Copying Single Column”. Makronaredbu "CopyingMultipleColumnData" možete izvršiti klikom na gumb "Kopiranje više stupaca".

Prije pokretanja makronaredbe potrebno je u tekstualnom okviru odrediti put mape u koju se nalaze Excel datoteke.

Kad se pritisne gumb "Kopiranje jednog stupca", nova radna knjiga "ConsolidatedFile" bit će generirana u definiranoj mapi. Ova će radna knjiga sadržavati objedinjene podatke iz prvog stupca svih datoteka u mapi.

Nova radna knjiga sadržavat će samo zapise u prvom stupcu. Nakon što dobijemo konsolidirane podatke, možemo saznati broj zaposlenih prisutnih na određeni dan brojeći broj datuma. Brojanje određenog datuma bit će jednako broju zaposlenih koji su prisutni na taj dan.

Kad se pritisne gumb "Kopiranje više stupaca", generirat će se nova radna knjiga "ConsolidatedAllColumns" u definiranoj mapi. Ova će radna knjiga sadržavati objedinjene podatke iz svih zapisa svih datoteka u mapi.

Nova kreirana radna knjiga sadržavat će sve zapise iz svih datoteka u mapi. Nakon što dobijemo konsolidirane podatke, svi podaci o posjećenosti dostupni su u jednoj datoteci. Lako možemo pronaći broj zaposlenika koji su bili prisutni tog dana, a također i dobiti imena zaposlenika koji su bili prisutni tog dana.

Objašnjenje koda

List1.TextBox1.Vrijednost

Gornji kôd se koristi za dobivanje vrijednosti umetnute u tekstualni okvir "TextBox1" s lista "Sheet1".

Dir (FolderPath & "*.xlsx")

Gornji kôd koristi se za dobivanje naziva datoteke koja ima nastavak datoteke .xlsx. Za naziv datoteke s više znakova koristili smo zamjenski znak *.

Dok je Ime datoteke ""

Broj1 = Broj1 + 1

ReDim Preserve FileArray (1 do broja 1)

FileArray (Count1) = Ime datoteke

Ime datoteke = Dir ()

lužički Srbin

Gornji kôd koristi se za dobivanje naziva svih datoteka u mapi.

Za i = 1 prema UBound (FileArray)

Sljedeći

Gornji kôd se koristi za petlju kroz sve datoteke u mapi.

Raspon ("A1", ćelije (LastRow, 1)). Kopiraj DestWB.ActiveSheet.Cells (LastDesRow, 1)

Gornji kôd koristi se za kopiranje zapisa iz prvog stupca u odredišnu radnu knjigu.

Raspon ("A1", ActiveCell.SpecialCells (xlCellTypeLastCell)). Kopiraj DestWB.ActiveSheet.Cells (LastDesRow, 1)

Gornji kôd koristi se za kopiranje svih zapisa iz aktivne radne knjige u odredišnu radnu knjigu.

Molimo slijedite dolje za kôd

 Opcija Eksplicitno podkopiranjeSingleColumnData () 'Deklariranje varijabli Dim FileName, FolderPath, FileArray (), FileName1 kao String Dim LastRow, LastDesRow, Count1, i As Integer Dim SourceWB, DestWB Kao radna knjiga Primjena.ScreenUpdating = SheBoxText1.' Umetanje obrnute kose crte u putanju mape ako obrnuta kosa crta (\) nedostaje Ako je desno (FolderPath, 1) "\" Zatim FolderPath = FolderPath & "\" Kraj If 'Traženje Excel datoteka Ime datoteke = Dir (FolderPath & "*.xlsx") Count1 = 0 'Petlja kroz sve Excel datoteke u mapi Workbooks.Add For i = 1 to UBound (FileArray) 'Pronalaženje posljednjeg retka u radnoj knjizi LastDesRow = DestWB.ActiveSheet.Range ("A1"). SpecialCells (xlCellTypeLastCell) .Row' Otvaranje Excel radne knjige Postavite SourceWB = Radne knjige.Open (FolderPath & FileArray (i)) LastRow = ActiveCell.SpecialCells (xlCellTypeLas tCell) .Row 'Lijepljenje kopiranih podataka u zadnji redak u odredišnoj radnoj knjizi If LastDesRow = 1 Then' Kopiranje prvog stupca u zadnji redak u rasponu odredišne ​​radne knjige ("A1", ćelije (LastRow, 1)). ActiveSheet.Cells (LastDesRow, 1) Else Range ("A1", Cells (LastRow, 1)). Copy DestWB.ActiveSheet.Cells (LastDesRow + 1, 1) End If SourceWB.Close False Next 'Spremanje i zatvaranje novog Excela radna knjiga DestWB.SaveAs FileName: = FolderPath & "ConsolidatedFile.xlsx" DestWB.Close Set DestWB = Ništa nije postavljeno SourceWB = Ništa Kraj Sub Sub CopyingMultipleColumnData () 'Proglašavanje varijabli Dim FileName, FolderPath, FileArArRayRast1,, , Count1, i As Integer Dim SourceWB, DestWB As Applicationbook Application.ScreenUpdating = False FolderPath = Sheet1.TextBox1.Value 'Umetanje obrnute kose crte u putanju mape ako kosa crta (\) nedostaje Ako je desno (FolderPath, 1) "\" Zatim FolderPath = FolderPath & "\" End If "Traženje Excel datoteka FileName = Dir (FolderPath &"*.xlsx ") Count1 = 0 'Ponavljanje svih Excel datoteka u mapi Dok je FileName "" Count1 = Count1 + 1 ReDim Preserve FileArray (1 To Count1) FileArray (Count1) = FileName FileName = Dir () Wend' Stvaranje nove radne knjige Set DestWB = Workbooks.Add Za i = 1 prema UBound (FileArray) 'Pronalaženje posljednjeg retka u radnoj knjizi LastDesRow = DestWB.ActiveSheet.Range ("A1"). SpecialCells (xlCellTypeLastCell) .Row' Otvaranje Excel radne knjige Postavite SourceWB = Radne knjige.Otvori (FolderPath & FileArray (i)) 'Lijepljenje kopiranih podataka u posljednji redak u odredišnoj radnoj knjizi If LastDesRow = 1 Then' Kopiranje svih podataka na radnom listu u zadnji redak u rasponu odredišne ​​radne knjige ("A1", ActiveCell.SpecialCells (xlCellTypeLastCell)). Kopiraj DestWB.ActiveSheet.Cells (LastDesRow, 1) Ostali raspon ("A1", ActiveCell.SpecialCells (xlCellTypeLastCell)). Kopiraj DestWB.ActiveSheet.Cells (LastDesRow + 1, 1) Završi ako je SourceWB.Sse ". nova Excel radna knjiga DestWB.SaveAs FileName: = FolderPath & "ConsolidatedAllColumns.xlsx" DestWB.Zatvorite skup D estWB = Ništa nije postavljeno IzvorWB = Ništa ne završava pod 

Ako vam se dopao ovaj blog, podijelite ga sa svojim prijateljima na Facebooku. Također, možete nas pratiti na Twitteru i Facebooku.

Voljeli bismo vas čuti, javite nam kako možemo poboljšati svoj rad i učiniti ga boljim za vas. Pišite nam na web stranici e -pošte

Vi ćete pomoći u razvoju web stranice, dijeljenje stranicu sa svojim prijateljima

wave wave wave wave wave