VBA Kopírovat list / Kopírovat list do jiného sešitu

Tento tutoriál se bude zabývat tím, jak kopírovat list nebo list pomocí VBA.

Zkopírujte list do nového sešitu

Zkopírování listu do nového sešitu:

1 Listy („List1“). Zkopírujte

Zkopírujte ActiveSheet do nového sešitu

Chcete -li zkopírovat ActiveSheet do nového sešitu:

1 ActiveSheet.Copy

Zkopírujte více listů do nového sešitu

Chcete -li zkopírovat více listů do nového sešitu:

1 ActiveWindow.SelectedSheets.Copy

Kopírovat list do stejného sešitu

Začali jsme tím, že vám ukážeme nejjednodušší příklad kopírování listů: kopírování listů do nového sešitu. Tyto příklady níže vám ukážou, jak zkopírovat list do stejného sešitu. Při kopírování listu v rámci Worbooku musíte určit umístění. Chcete -li určit umístění, řeknete VBA, aby přesunul list PŘED nebo PO jiném listu.

Kopírování listu před dalším listem

Zde určíme kopírování a vložení listu před list 2

1 Listy („List1“). Kopírovat před: = Listy („List2“)

Zkopírujte list před první list

Místo zadání názvu listu můžete také zadat pozici listu. Zde kopírujeme a vkládáme list před první list v sešitu.

1 Listy („List1“). Kopírovat před: = Listy (1)

Nově vytvořený list bude nyní prvním listem v sešitu.

Kopírovat list za posledním listem

Pomocí vlastnosti After řekněte VBA, aby vložila list PO dalším listu. Zde zkopírujeme a vložíme list za poslední list v sešitu:

1 Listy ("List1"). Kopírovat po: = Listy (Sheets.Count)

Všimněte si, že jsme použili Sheets.Count k spočítání počtu listů v sešitu.

Přesunout list

List můžete také přesunout v sešitu pomocí podobné syntaxe. Tento kód přesune list1 na konec sešitu:

1 Tabulky ("List1"). Přesunout za: = Listy (Sheets.Count)

Zkopírujte a pojmenujte list

Po zkopírování a vložení listu se z nově vytvořeného listu stane ActiveSheet. Chcete -li přejmenovat náš nový list, jednoduše použijte ActiveSheet.Name:

123456 Dílčí kopírovací listRename1 ()Listy ("List1"). Kopírovat po: = Listy (Sheets.Count)ActiveSheet.Name = "Poslední list"End Sub

Pokud název listu již existuje, výše uvedený kód vygeneruje chybu. Místo toho můžeme použít „On Error Resume Next“ a říci VBA, aby ignorovala pojmenování listu a pokračovala ve zbytku postupu:

12345678 Dílčí CopySheetRename2 ()Listy ("List1"). Kopírovat po: = Listy (Sheets.Count)Při chybě Pokračovat DalšíActiveSheet.Name = "Poslední list"Při chybě GoTo 0End Sub

Nebo pomocí naší funkce RangeExists otestujte, zda název listu již existuje, než se pokusíte list zkopírovat:

123456789101112131415161718 Dílčí kopieSheetRename3 ()Pokud RangeExists ("LastSheet") PakMsgBox "List již existuje."JinýListy ("List1"). Kopírovat po: = Listy (Sheets.Count)ActiveSheet.Name = "Poslední list"Konec IfEnd SubRozsah funkcíExistuje (WhatSheet jako řetězec, volitelně ByVal WhatRange jako řetězec = "A1") jako logická hodnotaDim test As RangePři chybě Pokračovat DalšíNastavit test = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Err.Number = 0Při chybě GoTo 0Koncová funkce

Zkopírujte a pojmenujte list podle hodnoty buňky

Můžete také zkopírovat a pojmenovat list na základě hodnoty buňky. Tento kód pojmenuje list na základě hodnoty buňky v A1

12345678 Dílčí CopySheetRenameFromCell ()Listy ("List1"). Kopírovat po: = Listy (Sheets.Count)Při chybě Pokračovat DalšíActiveSheet.Name = Rozsah ("A1"). HodnotaPři chybě GoTo 0End Sub

Zkopírujte pracovní list do jiného sešitu

Doposud jsme pracovali s kopírováním listů v sešitu. Nyní se budeme zabývat příklady kopírování a vkládání listů do jiných sešitů. Tento kód zkopíruje list na začátek jiného sešitu:

1 Listy ("List1"). Kopírovat před: = Sešity ("Example.xlsm"). Listy (1)

Tím se zkopíruje list na konec jiného sešitu.

1 Listy ("List1"). Kopírovat po: = Sešity ("Example.xlsm"). Listy (Sešity ("Example.xlsm"). Sheets.Count)

Všimněte si, že jsme vyměnili 1 s Sešity („Příklad.xlsm“). Listy. Počet získat poslední pracovní list.

Zkopírujte list do uzavřeného sešitu

Můžete také chtít zkopírovat list do sešitu, který je zavřený. Tento kód otevře uzavřený sešit, takže do něj můžete zkopírovat list.

123456789 Dílčí kopieSheetToClosedWB ()Application.ScreenUpdating = FalseNastavit closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")Listy („List1“). Kopírovat před: = closedBook.Sheets (1)closedBook.Close SaveChanges: = TrueApplication.ScreenUpdating = TrueEnd Sub

Zkopírujte list z jiného sešitu, aniž byste jej museli otevřít

Naopak tento kód zkopíruje list z uzavřeného sešitu, aniž byste museli sešit ručně otevírat.

123456789 Dílčí kopieSheetFromClosedWB ()Application.ScreenUpdating = FalseNastavit closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")closedBook.Sheets ("Sheet1"). Kopírovat před: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = FalseApplication.ScreenUpdating = TrueEnd Sub

Všimněte si, že v obou těchto příkladech jsme deaktivovali ScreenUpdating, takže proces běží na pozadí.

Duplikovat list Excelu vícekrát

List aplikace Excel můžete také duplikovat vícekrát pomocí smyčky.

1234567891011121314 Dílčí kopírovací listMultipleTimes ()Dim n jako celé čísloDim i As IntegerPři chybě Pokračovat Dalšín = InputBox („Kolik kopií chcete vytvořit?“)Pokud n> 0 PakPro i = 1 až nActiveSheet.Copy After: = ActiveWorkbook.Sheets (Worksheets.Count)dalšíKonec IfEnd Sub

wave wave wave wave wave