|
Ve spolupráci se SEDUO jsem vytvořil několik videokurzů:
Jak na kopírování a přesouvaní listů využitím VBA Excel. Kopie do stejného, jiného, přejmenování listu, určitý počet listů, jména listů. Přesunutí atd.
Zkopírovat list se velice hodí. Máte šablonu (měsíčního, týdenního) kalendáře a potřebujete 12, 54 kopií listu a nechcete provádět ručně, někdy jen chcete vyexportovat (přesunout) list do jiného sešitu. Na vše lze využít VBAčko.
pro přehlednost je článek rozdělen
Trocha teorie na začátek, jak je definována metoda Copy.
Copy( _Before_ , _After_ )
Copy After:=
název | povinný | typ | popis |
---|---|---|---|
Before | Volitelně | Variant | Před který list umístit |
After | Volitelně | Variant | Za který list umístit |
Jak na kopií listu. Kopie se provede do nového sešitu, otevře se.
' bude v novem sesitu
ActiveSheet.Copy
Máte-li označeno více listů.
' vice listu kopie do noveho sesitu
' predpoklad mate vybrany
ActiveWindow.SelectedSheets.Copy
' kapitola označování listů
Definice proměnných
Dim ws As Worksheet
Set ws = Worksheets("List3")
ws.Copy
' kapitola označování listů
Máte-li označeno více listů.
Worksheets(Array("List1", "List2", "List4")).Copy
Zkopírovat na konec
Dim ws As Worksheet
Sheets(1).Copy After:=Sheets(Sheets.Count)
Set ws = ActiveSheet
Zkopírovat na začátek a pojmenovat
Dim ws As Worksheet
MujKodovyNazevListu.Copy Before:=Sheets(1)
Set ws = ActiveSheet
ws.Name = "kopie listu začátek"
Zkopírovat za před/konkrétní list, pojmenovat a skrýt
Dim ws As Worksheet
MujKodovyNazevListu.Copy Before:=Sheets(5) ' After:=
Set ws = ActiveSheet
ws.Name = "kopie mezi"
ws.Visible = False ' skrýt list
Potřebujete-li překopírovat do otevřeného (existujícího souboru). Na začátek.
ActiveSheet.Copy Before:=Workbooks("Sesit-smazat.xlsx").Sheets(1)
Potřebujete-li překopírovat do otevřeného (existujícího souboru). Na konec.
ActiveSheet.Copy After:=Workbooks("Sesit-smazat.xlsx").Sheets(Workbooks("Sesit-smazat.xlsx").Worksheets.Count)
Do nového souboru a zavřít
' uloží do nového soubpopru a ten zavre
Worksheets("presun").Copy
With ActiveWorkbook
.SaveAs Filename:="D:\NovySoubor1.xlsx", FileFormat:=xlOpenXMLWorkbook
' zmenit umísteni a take typ ukladaneho souboru
.Close SaveChanges:=False
End With
' pozor aktuální složka
' Range("A3") = CurDir
Pro více listů
Worksheets(Array("Sheet1", "Sheet2", "Sheet4")).Copy
Poznámka, opět možno definovat proměnné, umístit před nebo za vybraný, existující list. Kopírovat více listů, využít kódový název listu atd. Kontrola otevřenosti souboru kam. Přejmenovat a skrývat vkopírovaný list.
V přípravě
V přípravě
Využitím cyklu pro tvorbu například 12 měsíců, kdy budou listy i pojmenovány. Základní ukázka, ošetření (max a min velikost čísla) zadaného čísla, existenci listu, které se vytvářejí atd. Již nechám na čtenáři.
Dim n As Integer
n = InputBox("Kolik kopií chceš?")
' nekontroluji zadanou hodnotu spoleham na inteigenci uzivatele
' pro aktivni list, ale zvolte si i jiny
For pocet = 1 To n
ActiveSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count)
' nekontroluji existenci názvu M- a prislusne cislo
ActiveSheet.Name = "M-" & pocet
Next
Další typy jsou v přípravě.
Po přesunutí skrýt ;)
Dim ws As Worksheet
MujKodovyNazevListu.Copy Before:=Sheets(5)
Set ws = ActiveSheet
ws.Name = "kopie mezi"
ws.Visible = False ' skrýt list
Další typy jsou v přípravě.
Trocha teorie na začátek jak je definována metoda Move.
Move( _Before_ , _After_ )
Move After:=
název | povinný | typ | popis |
---|---|---|---|
Before | Volitelně | Variant | Před který list umístit |
After | Volitelně | Variant | Za který list umístit |
Základní ukázka, jen přesune list do nového sešitu.
' pozor novy sesit
ActiveSheet.Move
Přesunutí stejný sešit a potřebuji vybraný list dostat/přesunout na začátek
' aktivní list
ActiveSheet.Move Before:=Worksheets(1)
' nebo konkretní list
Worksheets("List1").Move Before:=Worksheets(1)
' nebo přes kodové jméno
Přesunout na konec.
ActiveSheet.Move After:=Worksheets(Worksheets.Count)
Worksheets("List1").Move After:=Worksheets(Worksheets.Count)
Podobně za/před konkrétní list
Worksheets("List1").Move Before:=Sheets("List5")
Přesun do jiného otevřeného souboru
Sheets("presun").Move Before:=Workbooks("JinySesit.xls").Sheets(3)
Do nového souboru a zavřít
' uloží do nového soubopru a ten zavre
Worksheets("presun").Move
With ActiveWorkbook
.SaveAs Filename:="D:\NovySoubor2.xlsx", FileFormat:=xlOpenXMLWorkbook
' zmenit umísteni a take typ ukladaneho souboru
.Close SaveChanges:=False
End With
' pozor aktuální složka
' Range("A3") = CurDir
Opět
V přípravě
...
Soubor ke stažení zdarma v přípravě. Soubor využívá makra.
Napadá vás něco co při kopírování s listy se dá provádět a zatím zde chybí, můžete změnit v komentáři. Rád se inspiruji a doplním, stejně ta průběžně doplňují kódy které se i hodí pro práci.
Článek byl aktualizován: 19.09.2020 11:07
Ušetřil vám tento web čas, peníze? Pomohl vyřešit problém? Jste ochotni poskytnout symbolickou odměnu na další rozvoj? Vybrte si formu odměny, která vám vyhovuje.
Microsoft Office (Word, Excel, Google tabulky, PowerPoint) se věnuji od roku 2000 (od 2004 na této doméně) - V roce 2017 jsem od Microsoft získal prestižní ocenění MVP (zatím jsem jediný z ČR v kategorií Excel). Své vědomosti a zkušenosti dávám k dispozici i on-line ve videích pro SEDUO. Ve firmách školím a konzultuji, učím na MUNI. Tento web již tvořím přes 15 let. Zdarma je zde přes 1.000 návodu, tipů a triků, včetně přes 250 různých šablon, sešitů.
Můžete být prvními co zanechají smysluplný komentář.
Pomohl Vám návod? Sdílejte na Facebooku, G+ |
||
LinkedIn... |
Stránky o MS Office (Excel) produktu společnosti Microsoft. Neslouží jako technická podpora.
| Email na autora: pavel.lasak@gmail.com | Copyright © : Pavel Lasák 2004 - 2021 |