V tomto článku vytvoříme makro pro kopírování dat z více sešitů ve složce do nového sešitu.
Vytvoříme dvě makra; jedno makro zkopíruje pouze záznamy z prvního sloupce do nového sešitu a druhé makro do něj zkopíruje všechna data.
Nezpracovaná data pro tento příklad se skládají ze záznamů o docházce zaměstnanců. V TestFolder máme více souborů aplikace Excel. Názvy souborů souborů aplikace Excel představují konkrétní datum ve formátu „ddmmyyyy“.
Každý soubor aplikace Excel obsahuje datum, ID zaměstnance a jméno zaměstnance těch zaměstnanců, kteří byli v daný den přítomni.
Vytvořili jsme dvě makra; „CopyingSingleColumnData“ a „CopyingMultipleColumnData“. Makro „CopyingSingleColumnData“ zkopíruje do nového sešitu pouze záznamy z prvního sloupce všech souborů ve složce. Makro „CopyingMultipleColumnData“ zkopíruje všechna data ze všech souborů ve složce do nového sešitu.
Makro „CopyingSingleColumnData“ lze spustit kliknutím na tlačítko „Kopírování jednoho sloupce“. Makro „CopyingMultipleColumnData“ lze spustit kliknutím na tlačítko „Kopírování více sloupců“.
Před spuštěním makra je třeba zadat cestu ke složce v textovém poli, kde jsou umístěny soubory aplikace Excel.
Po kliknutí na tlačítko „Kopírování jednoho sloupce“ se v definované složce vygeneruje nový sešit „ConsolidatedFile“. Tento sešit bude obsahovat konsolidovaná data z prvního sloupce všech souborů ve složce.
Nový sešit bude obsahovat pouze záznamy v prvním sloupci. Jakmile máme konsolidovaná data, můžeme zjistit počet zaměstnanců přítomných v konkrétní den počítáním data. Počet konkrétního data se bude rovnat počtu zaměstnanců přítomných v daný den.
Když kliknete na tlačítko „Kopírování více sloupců“, vygeneruje nový sešit „ConsolidatedAllColumns“ v definované složce. Tento sešit bude obsahovat konsolidovaná data ze všech záznamů všech souborů ve složce.
Vytvořený nový sešit bude obsahovat všechny záznamy ze všech souborů ve složce. Jakmile máme konsolidovaná data, máme k dispozici všechny podrobnosti o docházce v jednom souboru. Můžeme snadno zjistit počet zaměstnanců přítomných v daný den a také získat jména zaměstnanců, kteří byli v daný den přítomni.
Vysvětlení kódu
List1.TextBox1.Hodnota
Výše uvedený kód slouží k získání hodnoty vložené do textového pole „TextBox1“ z listu „List1“.
Dir (FolderPath & "*.xlsx")
Výše uvedený kód slouží k získání názvu souboru s příponou „.xlsx“. Pro název souboru s více znaky jsme použili zástupný znak *.
Zatímco název souboru ""
Count1 = Count1 + 1
ReDim Preserve FileArray (1 To Count1)
FileArray (Count1) = Název souboru
Název souboru = Dir ()
Zamířit
Výše uvedený kód se používá k získání názvů souborů všech souborů ve složce.
Pro i = 1 na UBound (FileArray)
další
Výše uvedený kód slouží k procházení všech souborů ve složce.
Rozsah ("A1", buňky (LastRow, 1)). Kopírovat DestWB.ActiveSheet.Cells (LastDesRow, 1)
Výše uvedený kód se používá ke kopírování záznamu z prvního sloupce do cílového sešitu.
Rozsah ("A1", ActiveCell.SpecialCells (xlCellTypeLastCell)). Kopírovat DestWB.ActiveSheet.Cells (LastDesRow, 1)
Výše uvedený kód se používá ke zkopírování všech záznamů z aktivního sešitu do cílového sešitu.
Pro kód prosím postupujte níže
Možnost Explicitní dílčí kopírováníSingleColumnData () 'Deklarování proměnných Dim Název_souboru, FolderPath, FileArray (), Název_souboru1 jako Řetězec Dim LastRow, LastDesRow, Count1, i jako Integer Dim SourceWB, DestWB jako sešit Application.ScreenUpdating = False FolderPath = Sheet1.Text Vložení zpětného lomítka do cesty složky, pokud chybí zpětné lomítko (\) Pokud Right (FolderPath, 1) "\" Then FolderPath = FolderPath & "\" End If 'Hledání souborů aplikace Excel Název_souboru = Dir (FolderPath & "*.xlsx") Count1 = 0 'Smyčkování všech souborů aplikace Excel ve složce, zatímco FileName "" Count1 = Count1 + 1 ReDim Preserve FileArray (1 To Count1) FileArray (Count1) = FileName FileName = Dir () Wend' Create a new workbook Set DestWB = Workbooks.Add For i = 1 To UBound (FileArray) 'Finding the last row in the workbook LastDesRow = DestWB.ActiveSheet.Range ("A1"). SpecialCells (xlCellTypeLastCell) .Row' Opening the Excel workbook Set SourceWB = Workbooks.Open (FolderPath & FileArray (i)) LastRow = ActiveCell.SpecialCells (xlCellTypeLas tCell) .Row 'Vložení zkopírovaných dat do posledního řádku v cílovém sešitu If LastDesRow = 1 Then' Kopírování prvního sloupce do posledního řádku v cílovém sešitu Rozsah („A1“, buňky (LastRow, 1)). Zkopírujte DestWB. ActiveSheet.Cells (LastDesRow, 1) Else Range ("A1", Cells (LastRow, 1)). Copy DestWB.ActiveSheet.Cells (LastDesRow + 1, 1) End If SourceWB.Close False Next 'Uložení a zavření nového Excelu sešit DestWB.SaveAs FileName: = FolderPath & "ConsolidatedFile.xlsx" DestWB.Close Set DestWB = Nothing Set SourceWB = Nothing End Sub CopyingMultipleColumnData () 'Declaring variables Dim FileName, FolderPath, FileArray (), FileName1 As String Dim LastRow „Count1, i As Integer Dim SourceWB, DestWB As Workbook Application.ScreenUpdating = False FolderPath = Sheet1.TextBox1.Value 'Inserting backslash in the folder path if backslash (\) is if Right (FolderPath, 1)" \ "Then FolderPath = FolderPath & "\" End If 'Hledání souborů aplikace Excel FileName = Dir (FolderPath & "*.xlsx") Count1 = 0 'Smyčka přes všechny soubory aplikace Excel ve složce, zatímco FileName "" Count1 = Count1 + 1 ReDim Preserve FileArray (1 To Count1) FileArray (Count1) = FileName FileName = Dir () Wend' Vytvoření nového sešitu Set DestWB = Workbooks.Add For i = 1 To UBound (FileArray) 'Finding the last row in the workbook LastDesRow = DestWB.ActiveSheet.Range ("A1"). SpecialCells (xlCellTypeLastCell) .Row' Opening the Excel workbook Set SourceWB = Workbooks.Open (FolderPath & FileArray (i)) 'Vložení zkopírovaných dat do posledního řádku v cílovém sešitu If LastDesRow = 1 Then' Kopírování všech dat v listu do posledního řádku v cílovém sešitu Rozsah („A1“, ActiveCell.SpecialCells (xlCellTypeLastCell)). Zkopírujte DestWB.ActiveSheet.Cells (LastDesRow, 1) Else Range ("A1", ActiveCell.SpecialCells (xlCellTypeLastCell)). Kopírovat DestWB.ActiveSheet.Cells (LastDesRow + 1, 1) End If SourceWB.Close False Next 'Ukládání a zavírání nový excelový sešit DestWB.SaveAs FileName: = FolderPath & "ConsolidatedAllColumns.xlsx" DestWB.Close Set D estWB = Nic není nastaveno SourceWB = Nic Konec Sub
Pokud se vám tento blog líbil, sdílejte ho se svými přáteli na Facebooku. Také nás můžete sledovat na Twitteru a Facebooku.
Rádi bychom od vás slyšeli, dejte nám vědět, jak můžeme zlepšit naši práci a zlepšit ji pro vás. Napište nám na e -mail