Kako duplicirati list u Excelu s VBA

  • Podijeli Ovo
Michael Brown

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 Sub

    Kopiraj 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 Sub

    Excel 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 Sub

    Kopiraj 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 Sub

    Napomena. 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 Sub

    S 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 Sub

    Kopiraj 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 Sub

    Kada 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 Sub

    Kako 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 Sub

    Nakon 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 Sub

    Alternativno, 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 Sub

    Makro 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 Sub

    Excel 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.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Postavi izvornu knjigu = Radne knjige. Otvori ( "C:\Users\XXX\Documents\Target_Book.xlsx" ) sourceBook.Sheets( "Sheet1" ).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook. Close Application.ScreenUpdating = True End Sub

    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 Sub

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

    1. Otvorite radni list koji želite kopirati.
    2. Pritisnite Alt + F11 da otvorite Visual Basic Editor.
    3. Na u lijevom oknu desnom tipkom miša kliknite ThisWorkbook , a zatim kliknite Insert > Module .
    4. Zalijepite kod u prozor koda.
    5. 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:

    1. Otvorite preuzetu radnu knjigu i omogućite sadržaj ako se to od vas zatraži.
    2. Otvorite vlastitu radnu knjigu i dođite do lista koji želite kopija.
    3. <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!

    Michael Brown predani je tehnološki entuzijast sa strašću za pojednostavljivanjem složenih procesa pomoću softverskih alata. S više od desetljeća iskustva u tehnološkoj industriji, usavršio je svoje vještine u Microsoft Excelu i Outlooku, kao i Google tablicama i dokumentima. Michaelov blog posvećen je dijeljenju znanja i stručnosti s drugima, pružajući savjete i upute koje je lako slijediti za poboljšanje produktivnosti i učinkovitosti. Bez obzira jeste li iskusni profesionalac ili početnik, Michaelov blog nudi vrijedne uvide i praktične savjete za izvlačenje maksimuma iz ovih osnovnih softverskih alata.