- Kopirajte delovni list v nov delovni zvezek
- Kopirajte več listov v nov delovni zvezek
- Kopiraj list v istem delovnem zvezku
- Premakni list
- Kopija in imenski list
- Kopirajte delovni list v drug delovni zvezek
- Kopirajte delovni list v zaprt delovni zvezek
- Kopirajte list iz drugega delovnega zvezka, ne da bi ga odprli
- Večkrat podvojite Excelov list
Ta vadnica bo zajemala, kako kopirati list ali delovni list z uporabo VBA.
Kopirajte delovni list v nov delovni zvezek
Če želite kopirati delovni list v nov delovni zvezek:
1 | Listi ("List1"). Kopiraj |
Kopirajte ActiveSheet v nov delovni zvezek
Če želite kopirati list ActiveSheet v nov delovni zvezek:
1 | ActiveSheet.Copy |
Kopirajte več listov v nov delovni zvezek
Če želite kopirati več listov v nov delovni zvezek:
1 | ActiveWindow.SelectedSheets.Copy |
Kopiraj list v istem delovnem zvezku
Začeli smo s predstavitvijo najpreprostejšega primera kopiranja listov: kopiranje listov v nov delovni zvezek. Spodnji primeri vam bodo pokazali, kako kopirati list v istem delovnem zvezku. Ko kopirate list v delovnem zvezku, morate določiti lokacijo. Če želite določiti lokacijo, boste VBA povedali, naj delovni list premakne PRED ali PO drugem delovnem listu.
Kopiraj list pred drugim listom
Tukaj bomo določili kopiranje in lepljenje lista pred listom2
1 | Listi ("List1"). Kopiraj prej: = Listi ("List2") |
Kopiraj list pred prvim listom
Namesto imena lista lahko določite tudi položaj lista. Tukaj kopiramo in lepimo list pred prvim listom v delovnem zvezku.
1 | Listi ("List1"). Kopiraj prej: = Listi (1) |
Novonastali list bo zdaj prvi list v delovnem zvezku.
Kopiraj list po zadnjem listu
Z lastnostjo After povejte VBA, naj prilepi list PO drugem listu. Tukaj bomo kopirali in prilepili list po zadnjem listu v delovnem zvezku:
1 | List ("List1"). Kopiraj po: = List (Sheets.Count) |
Upoštevajte, da smo uporabili Sheets.Count za štetje števila listov v delovnem zvezku.
Premakni list
List lahko tudi premaknete v delovnem zvezku s podobno skladnjo. Ta koda premakne List1 na konec delovnega zvezka:
1 | Listi ("List1"). Premakni se po: = Listi (Sheets.Count) |
Kopija in imenski list
Po kopiranju in lepljenju lista novonastali list postane ActiveSheet. Če želite preimenovati naš novi list, preprosto uporabite ActiveSheet.Name:
123456 | Sub CopySheetRename1 ()List ("List1"). Kopiraj po: = List (Sheets.Count)ActiveSheet.Name = "Zadnji list"End Sub |
Če ime lista že obstaja, bo zgornja koda ustvarila napako. Namesto tega lahko uporabimo »On Error Resume Next«, da povemo VBA, naj prezre poimenovanje lista in nadaljuje s preostalim postopkom:
12345678 | Sub CopySheetRename2 ()List ("List1"). Kopiraj po: = List (Sheets.Count)On Napaka Nadaljuj NaprejActiveSheet.Name = "Zadnji list"Pri napaki Pojdi na 0End Sub |
Ali pa uporabite našo funkcijo RangeExists, da preizkusite, ali ime lista že obstaja, preden poskusite kopirati list:
123456789101112131415161718 | Sub CopySheetRename3 ()Če RangeExists ("LastSheet") PotemMsgBox "List že obstaja."Sicer paList ("List1"). Kopiraj po: = List (Sheets.Count)ActiveSheet.Name = "Zadnji list"Konec ČeEnd SubFunkcija RangeExists (WhatSheet As String, Izbirno ByVal WhatRange As String = "A1") Kot BooleanZatemni preskus kot obsegOn Napaka Nadaljuj NaprejNastavi test = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Err.Number = 0Pri napaki Pojdi na 0Končana funkcija |
Kopirajte in imenski list glede na vrednost celice
Morda boste želeli tudi kopirati in poimenovati list na podlagi vrednosti celice. Ta koda bo imenovala delovni list glede na vrednost celice v A1
12345678 | Sub CopySheetRenameFromCell ()List ("List1"). Kopiraj po: = List (Sheets.Count)On Napaka Nadaljuj NaprejActiveSheet.Name = Obseg ("A1"). VrednostPri napaki Pojdi na 0End Sub |
Kopirajte delovni list v drug delovni zvezek
Doslej smo delali s kopiranjem listov v delovni zvezek. Zdaj bomo obravnavali primere kopiranja in lepljenja listov v druge delovne zvezke. Ta koda bo kopirala list na začetek drugega delovnega zvezka:
1 | Listi ("List1"). Kopiraj pred: = Delovni zvezki ("Primer.xlsm"). Listi (1) |
To bo kopiralo delovni list na konec drugega delovnega zvezka.
1 | Listi ("List1"). Kopiraj po: = Delovni zvezki ("Primer.xlsm"). Listi (Delovni zvezki ("Primer.xlsm"). Listi. Število) |
Upoštevajte, da smo zamenjali 1 z Delovni zvezki (»Primer.xlsm«). Listi. Štetje da dobite zadnji delovni list.
Kopirajte delovni list v zaprt delovni zvezek
Delovni list boste morda želeli kopirati tudi v zaprt delovni zvezek. Ta koda odpre zaprt delovni zvezek, tako da lahko vanj kopirate list.
123456789 | Sub CopySheetToClosedWB ()Application.ScreenUpdating = NapačnoSet closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")Listi ("List1"). Kopiraj pred: = zaprtaKnjiga. Listi (1)closedBook.Close SaveChanges: = TrueApplication.ScreenUpdating = ResEnd Sub |
Kopirajte list iz drugega delovnega zvezka, ne da bi ga odprli
Nasprotno pa bo ta koda kopirala delovni list IZ zaprtega delovnega zvezka, ne da bi vam bilo treba ročno odpreti delovni zvezek.
123456789 | Sub CopySheetFromClosedWB ()Application.ScreenUpdating = NapačnoSet closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")closedBook.Sheets ("Sheet1"). Kopiraj pred: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = FalseApplication.ScreenUpdating = ResEnd Sub |
Upoštevajte, da smo v obeh primerih onemogočili posodabljanje zaslona, tako da postopek teče v ozadju.
Večkrat podvojite Excelov list
List Excel lahko tudi večkrat podvojite z uporabo zanke.
1234567891011121314 | Sub CopySheetMultipleTimes ()Dim n kot celo številoDim i kot celo številoOn Napaka Nadaljuj Naprejn = InputBox ("Koliko kopij želite narediti?")Če je n> 0, potemZa i = 1 proti nActiveSheet.Copy After: = ActiveWorkbook.Sheets (Delovni listi. Število)NaslednjiKonec ČeEnd Sub |