Kako duplirati list u Excelu sa VBA

  • Podijeli Ovo
Michael Brown

Vodič pruža kolekciju makroa za dupliciranje listova u Excelu: kopiranje i preimenovanje na osnovu vrijednosti ćelije, kopiranje više listova, kopiranje aktivnog radnog lista u drugu datoteku bez otvaranja i još mnogo toga.

Ručno kopiranje listova u Excelu je prilično 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 ćete pronaći pregršt korisnih makroa za automatizaciju ovog zadatka.

    Excel VBA za kopiranje lista u novu radnu knjigu

    Ovaj najjednostavniji jednoredni makro radi točno ono što mu ime sugerira - kopira aktivni list u novu radnu knjigu.

    Javni pod CopySheetToNewWorkbook() activeSheet.Copy End Sub

    Kopiraj više listova u Excelu pomoću VBA

    Ako želite kopirajte nekoliko listova iz aktivne radne knjige u novu, odaberite sve radne listove od interesa i pokrenite ovaj makro:

    Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End Sub

    Excel VBA za kopiranje lista u drugu radnu knjigu

    U zavisnosti od toga gdje želite da umetnete kopirani list, koristite jedan od sljedećih makroa.

    Kopiraj list na početak druge radne knjige

    Ovaj makro kopira aktivni list prije svi ostali radni listovi u odredišnoj datoteci, Knjiga1 u ovom primjeru. Da kopirate u drugu datoteku, zamijenite "Book1.xlsx" punim imenom vaše ciljne radne knjige.

    Public SubCopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks( "Book1.xlsx" ).Sheets(1) End Sub

    Kopiraj list na kraj druge radne knjige

    Ovaj dio koda duplira aktivni radni list i stavlja kopiju na kraj Book1 . Opet, ne zaboravite zamijeniti "Book1.xlsx" imenom vaše odredišne ​​radne knjige.

    Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx) " ).Worksheets.Count) End Sub

    Napomena. Da bi makroi radili, ciljna radna knjiga mora biti sačuvana na vašem tvrdom disku ili mreži.

    Kopiraj list u odabranu radnu knjigu

    Da biste mogli kopirati trenutni list u bilo koju otvorenu radnu knjigu, možete kreirati korisnički obrazac (nazvan UserForm1 ) s kontrolom ListBox ( nazvan ListBox1 ) i dva gumba:

    Sljedeće, dvaput kliknite na 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) Sljedeći kraj Sub Private Sub CommandButton1_Click() Ako ListBox1.ListIndex > -1 Zatim SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide End Sub

    Sa 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 :

    Javni pod CopySheetToBeginningAnotherWorkbook() Učitaj UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook " " ) Zatim activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End Sub

    Kopiraj list na kraj odabrane radne knjige :

    Public Sub CopySheetToEndAnotherWorkbook() Učitavanje UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Zatim activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ WorkbooksSelected(UsertedForm1)Usersheet.UsertedWork1.User. End Sub

    Kada se pokrene u Excelu, makro će vam pokazati listu svih trenutno otvorenih radnih knjiga. Odaberete potrebnu i kliknete OK:

    Excel makro za kopiranje lista i preimenovanje

    Kada kopirate list u Excelu, replika dobija ime u zadanom formatu kao što je Sheet1 (2) . Sljedeći makroi mogu vas poštedjeti problema ručnog mijenjanja zadanog naziva.

    Ovaj kod duplira aktivni radni list, imenuje kopiju kao "Test Sheet" (slobodno je zamijeniti bilo kojim drugim imenom koje želite) , i postavlja kopirani list na kraj trenutne radne knjige.

    Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) U slučaju greške Nastavi Sljedeći activeSheet.Name ="Test Sheet" End Sub

    Da omogućite korisniku da navede ime za kopirani list , koristite ovaj kod:

    Public Sub CopySheetAndRename() Dim newName kao string na grešci Nastavi Next newName = InputBox( "Unesite ime za kopirani radni list" ) Ako je newName "" Zatim activeSheet.Copy After:=Worksheets(Sheets.Count) U slučaju greške Nastavi Next activeSheet.Name = newName End If End Sub

    Po pokretanju, makro prikazuje sljedeći okvir za unos u koji upišete željeno ime i pritisnete OK:

    Excel makro za kopiranje lista i preimenovanje na osnovu vrijednosti ćelije

    U U nekim situacijama može biti zgodnije dati naziv kopiji određenom vrijednošću ćelije, na primjer, zaglavljem stupca. Za ovo jednostavno uzmite gornji kod i dostavite vrijednost trenutno odabrane ćelije u polje za unos automatski. Kao i u prethodnom primjeru, kopija će biti postavljena na kraj aktivne radne knjige.

    Najteži dio bi bio da vaši korisnici uvijek izaberu ispravnu ćeliju prije pokretanja makro :)

    Public Sub CopySheetAndRenameByCell() Dim newName kao string na grešci Nastavi Next newName = InputBox( "Unesite ime za kopirani radni list" , "Kopiraj radni list" , ActiveCell.Value) Ako je newName "" Zatim activeSheet. Copy After:=Worksheets(Sheets.Count) U slučaju greške Nastavi Sljedeći activeSheet.Name = newName Kraj Ako End Sub

    Alternativno, možete tvrdo kodirati adresućelija po kojoj bi kopija trebala biti imenovana, ćelija A1 u kodu ispod. Za imenovanje kopiranog radnog lista na osnovu 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" ).Vrijednost "" Zatim U slučaju greške Nastavi Sljedeće activeSheet.Name = wks.Range( "A1" ).Value End If wks.Activate End Sub

    Makro za kopiranje radnog lista u zatvorenu radnu knjigu

    Ovaj makro kopira aktivni list na kraj zatvorene radne knjige. Ime druge radne knjige nije navedeno 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.

    Javni pod CopySheetToClosedWorkbook() Dim fileName Dim closeBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Datoteke (*.xlsx), *.xlsx" ) Ako je naziv datoteke False onda Application.ScreenUpdating = False Postavite currentSheet = Application.activeSheet Set closeBook = Radne knjige. Otvori (ime datoteke) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count) closeBook. Close ( True ) Application.ScreenUpdating = True End If End Sub

    Excel VBA za kopiranje lista iz druge radne knjige bezotvaranje

    Ovaj makro vam omogućava da kopirate radni list iz druge Excel datoteke bez otvaranja. Kopirani list će biti umetnut na kraj trenutne radne knjige.

    Samo zapamtite da napravite nekoliko zamjena u kodu:

    • C:\Users\XXX\Documents\ Target_Book.xlsx treba promijeniti u stvarnu putanju i naziv radne knjige iz koje želite kopirati list.
    • Sheet1 treba zamijeniti imenom lista koji želite kopirati.
    Public Sub CopySheetFromClosedWorkbook() Dim izvorna knjiga kao aplikacija za radnu svesku.ScreenUpdating = False Postavite izvornu knjigu = Radne knjige. Otvorite ( "C:\Users\XXX\Documents\Target_Book.xlsx" ) sourceBook.Sheets( "Sheet1" ).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook. Zatvori Application.ScreenUpdating = True End Sub

    Excel VBA za višestruko dupliciranje lista

    Ponekad ćete možda morati da duplicirate isti list više puta, na primjer da testirate različite formule na istom skupu podataka. Ovo se lako može uraditi sa sledećim makroom.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Koliko kopija aktivnog lista želite da napravite?" ) Ako je n > = 1 Tada Za numtimes = 1 Do n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    Otvorite originalni list, pokrenite makro, odredite koliko kopija aktivnog listakoje želite da napravite i kliknite OK :

    Kako duplirati listove u Excelu sa VBA

    Da kopirate list u Excelu sa jednim od gore navedenih makroa, možete ili umetnuti VBA kod u svoju knjigu ili pokrenuti makro iz naše radne knjige uzorka.

    Kako dodati makro u svoju radnu knjigu

    Da biste umetnuli koda u radnoj svesci, izvršite ove korake:

    1. Otvorite radni list koji želite da kopirate.
    2. Pritisnite Alt + F11 da otvorite Visual Basic Editor.
    3. Uključeno lijevo okno, kliknite desnim tasterom miša na Ova radna sveska , a zatim kliknite na Insert > Module .
    4. Zalijepite kod u prozor Code.
    5. Pritisnite F5 da pokrenete makro.

    Za detaljna uputstva korak po korak pogledajte Kako umetnuti VBA kod u Excel.

    Kako pokrenuti makro iz naše radne sveske

    Alternativno, možete preuzeti našu radnu svesku u duplikate Excel listova i odatle pokrenuti kod.

    Primjer radne knjige sadrži sljedeće makroe:

    CopySheetToNewWorkbook - kopira cu iznajmi 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 - duplira trenutni plahta,preimenuje ga kako je odredio korisnik i stavlja kopiju iza svih ostalih listova u trenutnoj radnoj knjizi.

    CopySheetAndRenamePredefined - duplira aktivni list, daje tvrdo kodirano ime kopiji i postavlja je na kraju trenutne radne knjige.

    CopySheetAndRenameByCell - pravi kopiju aktivnog lista i preimenuje ga na osnovu odabrane vrijednosti ćelije.

    CopySheetAndRenameByCell2 - kopira aktivni list i preimenuje ga na osnovu tvrdo kodirane adrese ćelije.

    CopySheetToClosedWorkbook - omogućava vam kopiranje lista u zatvorenu radnu knjigu.

    CopySheetFromClosedWorkbook - omogućava vam da kopirate list iz druge Excel datoteke bez otvaranja.

    DuplicateSheetMultipleTimes - omogućava vam višestruko dupliciranje lista u Excel-u.

    Da pokrenite makro u svom Excelu, samo učinite sljedeće:

    1. Otvorite preuzetu radnu knjigu i omogućite sadržaj ako se to od vas zatraži.
    2. Otvorite svoju radnu svesku i idite do lista koji želite kopija.
    3. <1 7>U svom radnom listu pritisnite Alt + F8 , odaberite makro koji vas zanima i kliknite Pokreni .

    Tako možete duplirati list u Excelu sa VBA. Zahvaljujem vam na čitanju i nadam se da se vidimo na našem blogu sljedeće sedmice!

    Michael Brown je posvećen tehnološki entuzijasta sa strašću za pojednostavljenje složenih procesa pomoću softverskih alata. Sa više od decenije iskustva u tehnološkoj industriji, usavršio je svoje vještine u Microsoft Excelu i Outlooku, kao i Google Sheets i Docs. Michaelov blog je posvećen dijeljenju svog znanja i stručnosti s drugima, pružajući jednostavne savjete i tutorijale za poboljšanje produktivnosti i efikasnosti. Bilo da ste iskusni profesionalac ili početnik, Michaelov blog nudi vrijedne uvide i praktične savjete za izvlačenje maksimuma iz ovih osnovnih softverskih alata.