Sadržaj
Udžbenik nudi zbirku makronaredbi za dupliciranje listova u Excelu: kopirajte i preimenujte na temelju vrijednosti ćelije, kopirajte više listova, kopirajte aktivni radni list u drugu datoteku bez otvaranja i više.
Ručno kopiranje listova u Excelu prilično je brzo i jednostavno... ako se izvrši samo jednom ili dvaput. Umnožavanje više listova više puta je dosadno i dugotrajno. Na ovoj stranici pronaći ćete pregršt korisnih makronaredbi za automatizaciju ovog zadatka.
Excel VBA za kopiranje lista u novu radnu knjigu
Ova najjednostavnija makronaredba u jednom retku točno ono što mu ime sugerira - kopira aktivni list u novu radnu knjigu.
Public Sub CopySheetToNewWorkbook() activeSheet.Copy End SubKopiraj više listova u Excelu s VBA
Ako želite kopirajte nekoliko listova iz aktivne radne knjige u novu, odaberite sve radne listove od interesa i pokrenite ovu makronaredbu:
Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End SubExcel VBA za kopiranje lista u drugu radnu knjigu
Ovisno o tome gdje želite umetnuti kopirani list, koristite jednu od sljedećih makronaredbi.
Kopiraj list na početak druge radne knjige
Ova makronaredba kopira aktivni list prije sve ostale radne listove u odredišnoj datoteci, Knjiga1 u ovom primjeru. Za kopiranje u drugu datoteku, zamijenite "Book1.xlsx" s punim nazivom vaše ciljane radne knjige.
Public SubCopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks( "Book1.xlsx" ).Sheets(1) End SubKopiraj list na kraj druge radne knjige
Ovaj dio koda duplicira aktivni radni list i stavlja kopiju na kraj Knjige1 . Još jednom, ne zaboravite zamijeniti "Book1.xlsx" nazivom svoje odredišne radne knjige.
Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx) " ).Radni listovi.Count) End SubNapomena. Da bi makronaredbe radile, ciljna radna knjiga mora biti spremljena na vaš tvrdi disk ili mrežu.
Kopiraj list u odabranu radnu knjigu
Da biste mogli kopirati trenutni list u bilo koju otvorenu radnu knjigu, možete stvoriti korisnički obrazac (nazvan UserForm1 ) s ListBox kontrolom ( nazvan ListBox1 ) i dva gumba:
Zatim dvaput kliknite obrazac i zalijepite donji kod u prozor koda:
Public SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Every 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 End SubS korisničkim obrascem na mjestu, možete koristiti jedno od sljedećeg makronaredbe za kopiranjeaktivni list u radnu knjigu po vašem izboru.
Kopiraj list na početak odabrane radne knjige :
Public Sub CopySheetToBeginningAnotherWorkbook() Učitaj UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook " " ) Zatim activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End SubKopiraj list na kraj odabrane radne knjige :
Public Sub CopySheetToEndAnotherWorkbook() Učitaj UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook). _ Worksheets.Count) End If Unload UserForm1 End SubKada se pokrene u Excelu, makro će vam pokazati popis svih trenutno otvorenih radnih knjiga. Odaberite željeni i kliknite OK:
Excel makro za kopiranje lista i preimenovanje
Kada kopirate list u Excelu, replici se daje ime u zadanom formatu kao Sheet1 (2) . Sljedeće makronaredbe mogu vas poštedjeti problema ručne promjene zadanog naziva.
Ovaj kod duplicira aktivni radni list, imenuje kopiju kao "Testni list" (možete ga zamijeniti bilo kojim drugim nazivom koji želite) , i stavlja kopirani list na kraj trenutne radne knjige.
Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name ="Test Sheet" End SubKako biste omogućili korisniku da navede naziv za kopirani list , koristite ovaj kod:
Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Unesite naziv za kopirani radni list" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End SubNakon pokretanja, makro prikazuje sljedeći okvir za unos u koji upisujete željeni naziv i pritisnite OK:
Excel makro za kopiranje lista i preimenovanje na temelju vrijednosti ćelije
U u nekim situacijama može biti prikladnije imenovati kopiju s određenom vrijednošću ćelije, na primjer, zaglavlje stupca. U tu svrhu jednostavno uzmete gornji kod i automatski unesete vrijednost trenutno odabrane ćelije u okvir za unos. Kao i u prethodnom primjeru, kopija će biti postavljena na kraj aktivne radne knjige.
Najteži dio bi bio da vaši korisnici uvijek odaberu ispravnu ćeliju prije pokretanja makro :)
Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Unesite naziv za kopirani radni list" , "Kopiraj radni list" , ActiveCell.Value) Ako newName "" Zatim activeSheet. Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End SubAlternativno, možete tvrdo kodirati adresućelija po kojoj kopija treba biti imenovana, ćelija A1 u donjem kodu. Da biste imenovali kopirani radni list na temelju druge ćelije, zamijenite A1 odgovarajućom referencom ćelije.
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 radnog lista u zatvorenu radnu knjigu
Ova makronaredba kopira aktivni list na kraj zatvorene radne knjige. Naziv druge radne knjige nije naveden u kodu - makro će otvoriti standardni prozor Windows Explorera i omogućiti vam da odaberete bilo koju odredišnu datoteku:
Nakon što odaberete datoteku i kliknite Otvori , makro će kopirati aktivni list i automatski zatvoriti ciljnu radnu knjigu.
Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Datoteke (*.xlsx), *.xlsx" ) If fileName False Then Application.ScreenUpdating = False Postavi currentSheet = Application.activeSheet Postavi closedBook = Workbooks. Open (fileName) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count) closedBook. Close ( True ) Application.ScreenUpdating = True End If End SubExcel VBA za kopiranje lista iz druge radne knjige bezotvaranje
Ova vam makronaredba omogućuje kopiranje radnog lista iz druge Excel datoteke bez otvaranja. Kopirani list bit će umetnut na kraj trenutne radne knjige.
Samo ne zaboravite napraviti nekoliko zamjena u kodu:
- C:\Users\XXX\Documents\ Target_Book.xlsx treba promijeniti u stvarni put i naziv radne knjige iz koje želite kopirati list.
- Sheet1 treba zamijeniti nazivom lista koji želite kopirati.
Excel VBA za dupliciranje lista više puta
Ponekad ćete možda morati duplicirati isti list više od jednom, na primjer da testirate različite formule na istom skupu podataka. Ovo se lako može učiniti pomoću sljedeće makronaredbe.
Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Koliko kopija aktivnog lista želite napraviti?" ) Ako n > = 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End SubOtvorite originalni list, pokrenite makronaredbu, odredite koliko kopija aktivnog listaželite napraviti i kliknite OK :
Kako duplicirati listove u Excelu s VBA
Kopirati list u Excelu s jednom od gornjih makronaredbi, možete umetnuti VBA kod u svoju knjigu ili pokrenuti makronaredbu iz naše ogledne radne knjige.
Kako dodati makronaredbu u svoju radnu knjigu
Da biste umetnuli koda u svojoj radnoj knjizi, izvršite ove korake:
- Otvorite radni list koji želite kopirati.
- Pritisnite Alt + F11 da otvorite Visual Basic Editor.
- Na u lijevom oknu desnom tipkom miša kliknite ThisWorkbook , a zatim kliknite Insert > Module .
- Zalijepite kod u prozor koda.
- Pritisnite F5 za pokretanje makronaredbe.
Za detaljne upute korak po korak pogledajte Kako umetnuti VBA kod u Excel.
Kako pokrenuti makronaredbu iz naše ogledne radne knjige
Alternativno, možete preuzeti našu oglednu radnu knjigu u Duplicate Excel Sheets i pokrenuti kôd od tamo.
Ogledna radna knjiga sadrži sljedeće makronaredbe:
CopySheetToNewWorkbook - kopira cu iznajmite radni list u novu radnu knjigu.
CopySelectedSheets - kopira više listova koje odaberete u novu radnu knjigu.
CopySheetToBeginningAnotherWorkbook - kopira aktivni list na početak druge radne knjige.
CopySheetToEndAnotherWorkbook - kopira aktivni list na kraj druge Excel datoteke.
CopySheetAndRename - duplicira trenutni list,preimenuje ga kako je odredio korisnik i stavlja kopiju iza svih ostalih listova u trenutnoj radnoj knjizi.
CopySheetAndRenamePredefined - duplicira aktivni list, daje tvrdo kodirani naziv kopiji i postavlja je na kraju trenutne radne knjige.
CopySheetAndRenameByCell - stvara kopiju aktivnog lista i preimenuje ga na temelju vrijednosti odabrane ćelije.
CopySheetAndRenameByCell2 - kopira aktivni list i preimenuje ga na temelju tvrdo kodirane adrese ćelije.
CopySheetToClosedWorkbook - omogućuje kopiranje lista u zatvorenu radnu knjigu.
CopySheetFromClosedWorkbook - omogućuje kopiranje lista iz druge Excel datoteke bez otvaranja.
DuplicateSheetMultipleTimes - omogućuje vam dupliciranje lista u Excelu više puta.
Za pokrenite makronaredbu u svom Excelu, samo učinite sljedeće:
- Otvorite preuzetu radnu knjigu i omogućite sadržaj ako se to od vas zatraži.
- Otvorite vlastitu radnu knjigu i dođite do lista koji želite kopija. <1 7>U svom radnom listu pritisnite Alt + F8 , odaberite makronaredbu koja vas zanima i kliknite Pokreni .
Tako možete duplicirati list u Excelu s VBA. Zahvaljujem vam na čitanju i nadam se da se vidimo na našem blogu sljedeći tjedan!