Kazalo
V priročniku je na voljo zbirka makrov za podvajanje listov v Excelu: kopiranje in preimenovanje na podlagi vrednosti celic, kopiranje več listov, kopiranje aktivnega delovnega lista v drugo datoteko, ne da bi jo odprli, in še več.
Ročno kopiranje listov v Excelu je dokaj hitro in preprosto... če se izvede le enkrat ali dvakrat. Večkratno podvajanje več listov je dolgočasno in zamudno. Na tej strani boste našli nekaj uporabnih makrov za avtomatizacijo tega opravila.
Excel VBA za kopiranje lista v nov delovni zvezek
Ta najpreprostejši enovrstični makro naredi točno to, kar pove njegovo ime - kopira aktivni list v nov delovni zvezek.
Public Sub CopySheetToNewWorkbook() activeSheet.Copy End SubKopiranje več listov v Excelu z VBA
Če želite kopirati več listov iz aktivnega delovnega zvezka v novega, izberite vse zanimive delovne liste in zaženite ta makro:
Public Sub KopirajIzbraneListine() ActiveWindow.SelectedSheets.Copy End SubExcel VBA za kopiranje lista v drug delovni zvezek
Glede na to, kam želite vstaviti kopirani list, uporabite enega od naslednjih makrov.
Kopiranje lista na začetek drugega delovnega zvezka
Ta makro kopira aktivni list pred vsemi drugimi delovnimi listi v ciljni datoteki, Knjiga1 Če želite kopirati v drugo datoteko, zamenjajte "Book1.xlsx" s polnim imenom ciljnega delovnega zvezka.
Public Sub CopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks("Book1.xlsx" ).Sheets(1) End SubKopiranje lista na konec drugega delovnega zvezka
Ta del kode podvoji aktivni delovni list in kopijo postavi na konec Knjiga1 . Še enkrat ne pozabite zamenjati "Book1.xlsx" z imenom ciljnega delovnega zvezka.
Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks("Book1.xlsx" ).Sheets(Workbooks("Book1.xlsx" ).Worksheets.Count) End SubOpomba: Za delovanje makrov mora biti ciljni delovni zvezek shranjen na trdem disku ali v omrežju.
Kopiranje lista v izbrani delovni zvezek
Če želite trenutni list kopirati v kateri koli odprt delovni zvezek, lahko ustvarite uporabniški obrazec (z imenom UserForm1 ) z a ListBox nadzor ( z imenom ListBox1 ) in dva gumba:
Nato dvakrat kliknite obrazec in v okno Koda prilepite spodnjo kodo:
Public SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Each wbk In Application.Workbooks ListBox1.AddItem (wbk.Name) Next End Sub Private Sub CommandButton1_Click() If ListBox1.ListIndex> -1 Then SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide EndPodKo je obrazec UserForm pripravljen, lahko za kopiranje aktivnega lista v izbrani delovni zvezek uporabite enega od naslednjih makrov.
Kopirajte list v začetek izbranega delovnega zvezka :
Public Sub CopySheetToBeginningAnotherWorkbook() Naloži UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Razloži UserForm1 End SubKopiraj list v konec izbranega delovnega zvezka :
Public Sub CopySheetToEndAnotherWorkbook() Naloži UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook). _ Worksheets.Count) End If Razloži UserForm1 End SubKo makro zaženete v Excelu, se prikaže seznam vseh trenutno odprtih delovnih zvezkov. Izberete potrebnega in kliknete V redu:
Excelov makro za kopiranje lista in preimenovanje
Ko v Excelu kopirate list, se repliki dodeli ime v privzeti obliki, kot je List 1 (2) Z naslednjimi makri si lahko prihranite težave z ročnim spreminjanjem privzetega imena.
Ta koda podvoji aktivni delovni list, kopijo poimenuje "Testni list" (lahko jo zamenjate s poljubnim imenom) in kopirani list postavi na konec trenutnega delovnega zvezka.
Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = "Test Sheet" End SubDa bi uporabniku omogočili, da določite ime kopiranega lista , uporabite to kodo:
Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Vnesite ime za kopirani delovni list" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End SubOb zagonu makro prikaže naslednje vnosno okno, v katerega vnesite želeno ime in pritisnite OK:
Excelov makro za kopiranje lista in preimenovanje na podlagi vrednosti celice
V nekaterih primerih je morda bolj priročno poimenovati kopijo z določeno vrednostjo celice, na primer glave stolpca. V tem primeru preprosto uporabite zgornjo kodo in vnesete vrednost trenutno izbrana celica v vnosno polje samodejno. Tako kot v prejšnjem primeru bo kopija postavljena na konec aktivnega delovnega zvezka.
Najtežje bi bilo, če bi uporabniki pred zagonom makra vedno izbrali pravilno celico :)
Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox("Vnesite ime za kopirani delovni list" , "Copy worksheet" , ActiveCell.Value) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End SubDruga možnost je, da trdo kodiranje naslova celice po kateri je treba kopijo poimenovati, tj. celica A1 v spodnji kodi. Če želite kopirani delovni list poimenovati na podlagi druge celice, nadomestite A1 z ustreznim sklicem na celico.
Public Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) If wks.Range("A1" ).Value "" Then On Error Resume Next activeSheet.Name = wks.Range("A1" ).Value End If wks.Activate End SubMakro za kopiranje delovnega lista v zaprt delovni zvezek
Ta makro kopira aktivni list na konec zaprtega delovnega zvezka. Ime drugega delovnega zvezka v kodi ni določeno - makro bo odprl standardno okno Raziskovalca Windows in vam omogočil, da izberete katero koli ciljno datoteko:
Ko izberete datoteko in kliknete Odpri , bo makro kopiral aktivni list in samodejno zaprl ciljni delovni zvezek.
Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Files (*.xlsx), *.xlsx" ) If fileName False Then Application.ScreenUpdating = False Set currentSheet = Application.activeSheet Set closedBook = Workbooks. Open (fileName) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count)Zapri knjigo. Zapri ( True ) Application.ScreenUpdating = True End If End SubExcel VBA za kopiranje lista iz drugega delovnega zvezka brez odpiranja
Ta makro vam omogoča kopiranje delovnega lista iz druge Excelove datoteke, ne da bi jo odprli. Kopirani list bo vstavljen na konec trenutnega delovnega zvezka.
Ne pozabite opraviti nekaj zamenjav v kodi:
- C:\Users\XXX\Documents\Target_Book.xlsx spremenite v dejansko pot in ime delovnega zvezka, iz katerega želite kopirati list.
- List1 je treba nadomestiti z imenom lista, ki ga želite kopirati.
Excel VBA za večkratno podvajanje listov
Včasih boste morda morali isti list podvojiti večkrat, na primer za preizkušanje različnih formul na istem naboru podatkov. To lahko preprosto storite z naslednjim makrom.
Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Koliko kopij aktivnega lista želite narediti?" ) If n>= 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End SubOdprite izvirni list, zaženite makro, določite, koliko kopij aktivnega lista želite narediti, in kliknite V REDU :
Kako podvojiti liste v Excelu z VBA
Če želite kopirati list v Excelu z enim od zgornjih makrov, lahko kodo VBA vstavite v svojo knjigo ali zaženete makro iz našega vzorčnega delovnega zvezka.
Kako dodati makro v delovni zvezek
Če želite kodo vstaviti v delovni zvezek, naredite naslednje korake:
- Odprite delovni list, ki ga želite kopirati.
- Pritisnite Alt + F11, da odprete urejevalnik Visual Basic.
- V levem podoknu z desno tipko miške kliknite Ta delovna knjiga in nato kliknite Vstavite > Modul .
- Kodo prilepite v okno Koda.
- Za zagon makra pritisnite F5.
Za podrobna navodila po korakih glejte Kako vstaviti kodo VBA v Excel.
Kako zagnati makro iz našega vzorčnega delovnega zvezka
Prenesete lahko tudi naš vzorčni delovni zvezek za podvajanje listov Excel in v njem zaženete kodo.
Vzorec delovnega zvezka vsebuje naslednje makroje:
CopySheetToNewWorkbook - kopira trenutni delovni list v nov delovni zvezek.
CopySelectedSheets - kopira več izbranih listov v nov delovni zvezek.
CopySheetToBeginningAnotherWorkbook - kopira aktivni list na začetek drugega delovnega zvezka.
CopySheetToEndAnotherWorkbook - kopira aktivni list na konec druge datoteke Excel.
CopySheetAndRename - podvoji trenutni list, ga preimenuje, kot je določil uporabnik, in kopijo postavi za vse druge liste v trenutnem delovnem zvezku.
CopySheetAndRenamePredefined - podvoji aktivni list, kopiji dodeli trdno kodirano ime in jo postavi na konec trenutnega delovnega zvezka.
CopySheetAndRenameByCell - naredi kopijo aktivnega lista in jo preimenuje glede na izbrano vrednost celice.
CopySheetAndRenameByCell2 - kopira aktivni list in ga preimenuje na podlagi trdno zakodiranega naslova celice.
CopySheetToClosedWorkbook - omogoča kopiranje lista v zaprt delovni zvezek.
CopySheetFromClosedWorkbook - omogoča kopiranje lista iz druge datoteke Excel, ne da bi jo odprli.
DuplicateSheetMultipleTimes - omogoča večkratno podvojitev lista v Excelu.
Če želite zagnati makro v Excelu, naredite naslednje:
- Odprite preneseni delovni zvezek in po pozivu omogočite vsebino.
- Odprite svoj delovni zvezek in pojdite na list, ki ga želite kopirati.
- V delovnem listu pritisnite kombinacijo tipk Alt + F8 , izberite makro, ki vas zanima, in kliknite Spustite .
Tako lahko podvojite list v Excelu s programom VBA. Zahvaljujem se vam za branje in upam, da se naslednji teden vidimo na našem blogu!