Použití maker VBA (Visual Basic for Applications) v Excelu umožňuje automatizovat duplicitní úkoly a výrazně zjednodušit práci s dokumenty. Jedním z takových úkolů může být kopírování dat z jednoho listu do druhého v rámci jedné knihy Excelu. V tomto článku se podíváme, jak to udělat s VBA.
Prvním krokem ke kopírování listu v Excelu VBA je určení zdrojového a cílového listu. Zdrojový list bude ten, ze kterého chceme zkopírovat data, a cílový je ten, do kterého chceme data zkopírovat. K tomu v VBA používáme objekty "Worksheet", což jsou samostatné listy v knize Excel.
Pro oznámení zdrojového a cílového listu používá VBA následující syntaxi:
Dim sourceSheet As Worksheet
Dim targetSheet As Worksheet
Po oznámení listů můžeme použít metodu "Copy" ke kopírování dat z původního listu do cílového listu. Tato metoda přijímá jednu možnost-list, na který se budou kopírovat data:
sourceSheet.Copy Before:=targetSheet
Když je tento kód spuštěn, Excel vytvoří nový list, který je přesnou kopií původního listu, a umístí jej před cílový list. Můžeme také použít možnost " After "místo" Before " k umístění zkopírovaného listu za cílový list.
Pomocí VBA v Excelu tedy můžeme snadno kopírovat data z jednoho listu do druhého. To je zvláště užitečné, když musíte provádět opakující se úkoly, které vyžadují kopírování dat, jako je vytváření sestav nebo analýza velkého množství informací. Pomocí maker VBA můžete výrazně zkrátit čas a zlepšit proces práce s daty v Excelu.
Základy kopírování listu v Excelu VBA
V Excelu VBA lze kopírovat jeden list na druhý list pomocí předmětu Worksheet a jeho metody Copy. To může být užitečné, pokud chcete vytvořit kopii stávajícího listu nebo jej přesunout na jiný list.
Chcete-li začít, musíte identifikovat objekty pro dva listy: zdrojového listu, který chcete zkopírovat, a cílového listu, do kterého chcete zkopírovat původní list. Můžete to udělat pomocí následujícího kódu:
Dim sourceSheet As WorksheetDim targetSheet As WorksheetSet sourceSheet = ThisWorkbook.Worksheets("Исходный лист")Set targetSheet = ThisWorkbook.Worksheets("Целевой лист")
Dále můžete použít metodu Copy objektu Worksheet ke zkopírování původního listu na cílový list. Takto vypadá kód pro tuto operaci:
sourceSheet.Copy Destination:=targetSheet
Po provedení tohoto kódu, zdrojový list bude zkopírován do cílového listu, uložení všech jeho dat, formátování a nastavení. Pokud již cílový list obsahuje data, budou přepsána novými daty z původního listu.
K přenosu dat, formátování a nastavení můžete také použít metodu Copy. Například:
sourceSheet.Copy Destination:=targetSheet, _Before:=Worksheets("Другой лист") ‘ Permet de copier avant un autre Sheet.
V takovém případě bude původní list zkopírován před uvedeným listem, nikoli na něj. Můžete také použít další možnosti, jako je After, Before, Count, a další, abyste mohli spravovat polohu nového listu v sešitu.
Kopírování listu v Excelu VBA je užitečná funkce, která pomáhá automatizovat úlohy kopírování a přesouvání dat mezi různými listy. Pomocí výše uvedených základů začněte experimentovat s kopírováním listů ve svých vlastních makrech VBA.
Vytvoření nového listu
K vytvoření nového listu se v Excelu VBA používá metoda Add objektu Sheets. Tato metoda vám umožňuje přidat nový list do knihy Excel.
Níže je uveden příklad použití metody Add pro vytvoření nového listu:
Při provádění tohoto kódu bude vytvořen nový list v knize Excel.
Ve výchozím nastavení bude na konec knihy přidán nový list. Nicméně, metoda Add umožňuje také zadat pozici, do které je třeba přidat nový list.
Chcete-li například přidat nový list na začátek knihy, můžete použít následující kód:
vba Sheets.Add Before:=Sheets(1)
V tomto příkladu bude před prvním listem v knize přidán nový list.
Také metodě Add můžete předat další možnosti, jako je název nového listu a šablona pro vytvoření listu. Chcete-li například vytvořit nový list s názvem Nový list a použít šablonu listu list 2, můžete použít následující kód:
vba Sheets.Add After:=Sheets ("list 2"), Name:= "nový list"
V tomto příkladu, nový list bude přidán za List " List 2 "a bude mít název"nový list".
Použití metody Add objektu Sheets umožňuje snadné vytváření nových listů v Excelu VBA.
Výběr zdrojového listu
Chcete-li zkopírovat jeden list na druhý v Excelu VBA, musíte vybrat původní list, který bude zkopírován do jiného listu. K tomu lze použít různé metody.
Jedním ze způsobů je vybrat zdrojový list podle jeho jména. Každý list v Excelu má jedinečný název, takže jej můžete oslovit pomocí jeho názvu jako řádku. Pokud se například zdrojový list nazývá "List1", kód pro výběr tohoto listu bude vypadat následovně:
Dim sourceSheet As WorksheetSet sourceSheet = ThisWorkbook.Sheets("Лист1")
V tomto případě bude proměnná " sourceSheet "obsahovat odkaz na list s názvem"List1".
Pokud neznáte přesný název listu, ale znáte jeho pořadové číslo, můžete si vybrat původní list podle jeho indexu. Indexace listů začíná od 1. Chcete-li například vybrat první list, kód bude vypadat následovně:
Dim sourceSheet As WorksheetSet sourceSheet = ThisWorkbook.Sheets(1)
V tomto případě bude proměnná "sourceSheet" obsahovat odkaz na první list v knize.
Můžete také vybrat zdrojový list pomocí objektu Workbook. Pokud máte například odkaz na knihu s názvem "Kniha1", pak kód pro výběr zdrojového listu bude vypadat následovně:
Dim sourceSheet As WorksheetSet sourceSheet = Workbooks("Книга1").Sheets("Лист1")
V tomto případě bude proměnná " sourceSheet "obsahovat odkaz na list s názvem" List1 "v knize s názvem"Kniha1".
Jak je vidět z příkladů, výběr zdrojového listu v Excelu VBA lze provést různými způsoby, podle toho, jaká data máte k dispozici pro jeho identifikaci.
Kopírování dat na nový list
Chcete-li zkopírovat data na nový list v Excelu VBA, můžete použít následující kód:
Sub Copydatatatonewsheet () Dim sourceSheet As Worksheet Dim targetSheet As Worksheet ' zadejte zdrojový a cílový list Set sourceSheet = ThisWorkbook.Sheets ("původní list") Set targetSheet = ThisWorkbook.Sheets.Add ' kopírujeme data sourceSheet.UsedRange.Copy Destination:=targetSheet.Range("A1") End Sub
V tomto kódu používáme objekt Worksheet pro původní a cílový list. Poté označíme původní list a vytvoříme nový list pomocí metody Sheets.Add ().
Poté použijeme metodu Copy pro objekt UsedRange a na nový list zadáme cílový rozsah A1. Nyní budou data zkopírována do nového listu.
Můžete změnit název a polohu cílového listu a použít další formátování a akce s daty podle vašeho uvážení.
Kopírování dat na nový list v Excelu VBA je výkonný nástroj, který vám umožní snadno vytvářet kopie původních dat bez změny originálu.
Kopírování formátování na nový list
Když potřebujete zkopírovat formátování z jednoho listu na druhý v Excelu VBA, můžete použít metody dostupné v objektu Range.
Chcete-li začít, proveďte vzorek na původním listu pomocí objektu Range:
- Set sourceRange = Sheets ("původní list").Range("A1:D10")
Zde vybereme buňky z A1 až D10 na listu "původní list". Tyto hodnoty můžete změnit podle svých potřeb.
Poté vytvořte nový list, do kterého chcete zkopírovat formátování z původního listu:
- Set destinationSheet = Sheets.Add
- destinationSheet.Name = "nový list"
Vytvoříme nový list a dáme mu název "nový list". Toto jméno můžete změnit, jak chcete.
Dále zkopírujte formátování z původního listu na nový list pomocí metody Copy:
- sourceRange.Copy Destination:=destinationSheet.Cells(1, 1)
Zde kopírujeme formátování z původního listu do nového listu, počínaje buňkou A1 na novém listu.
V důsledku provádění těchto akcí bude formátování z původního listu zkopírováno na nový list v Excelu VBA.
Kopírování vzorců na nový list
Níže je uveden příklad kódu, který kopíruje vzorce z listu "zdrojový list" na list "nový list":
Sub Копирование_формул()Dim Лист1 As WorksheetDim Лист2 As Worksheet' Определение листовSet Лист1 = ThisWorkbook.Worksheets("Исходный лист")Set Лист2 = ThisWorkbook.Worksheets("Новый лист")' Копирование формулЛист1.Cells.Copy Destination:=Лист2.Cells' Обновление формулЛист2.EnableCalculation = FalseЛист2.EnableCalculation = TrueEnd Sub
V tomto příkladu:
- Proměnné List1 a List2 jsou deklarovány jako typ Worksheet .
- Pomocí metody ThisWorkbook.Worksheets ("původní list") a ThisWorkbook.Worksheets ("nový list") jsou definovány požadované listy.
- Metoda Cells.Copy Destination:= List2.Cells kopíruje všechny buňky se vzorci z List1 na List2 .
- Kód List2.EnableCalculation = False a List2.EnableCalculation = True aktualizuje vzorce na List2 pro správný výpočet.
Po spuštění kódu budou na" novém listu "zkopírovány všechny vzorce ze" zdrojového listu " a při změně dat se automaticky aktualizují.