Како да се дуплира лист во Excel со VBA

  • Споделете Го Ова
Michael Brown

Упатството обезбедува збирка макроа за дупликат листови во Excel: копирајте и преименувајте врз основа на вредноста на ќелијата, копирајте повеќе листови, копирајте активен работен лист во друга датотека без да ја отворите и повеќе.

Рачното копирање листови во Excel е прилично брзо и едноставно... ако се изврши само еднаш или двапати. Умножувањето на повеќе листови повеќе пати е досадно и одзема многу време. На оваа страница, ќе најдете неколку корисни макроа за автоматизирање на оваа задача.

    Excel VBA за да го копира листот во нова работна книга

    Ова наједноставно еднолиниско макро прави точно како што сугерира неговото име - го копира активниот лист во нова работна книга.

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    Копирај повеќе листови во Excel со VBA

    Ако сакате да копирајте неколку листови од активната работна книга во нова, изберете ги сите работни листови од интерес и стартувајте го ова макро:

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

    Excel VBA за да го копирате листот во друга работна книга

    Во зависност од тоа каде сакате да го вметнете копираниот лист, користете едно од следните макроа.

    Копирајте го листот на почетокот на друга работна книга

    Ова макро го копира активниот лист пред сите други работни листови во дестинациската датотека, Книга1 во овој пример. За да копирате во друга датотека, заменете го „Book1.xlsx“ со целото име на вашата целна работна книга.

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

    Копирај го листот до крајот на друга работна книга

    Овој дел од кодот го дуплира активниот работен лист и ја става копијата на крајот од Книга1 . Повторно, не заборавајте да го замените „Book1.xlsx“ со името на вашата дестинација работна книга.

    Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( „Book1.xlsx“ ).Seets(Workbooks( „Book1.xlsx " ).Работни листови.Count) End Sub

    Забелешка. За да функционираат макроата, целната работна книга мора да биде зачувана на вашиот хард диск или мрежа.

    Копирајте го листот во избрана работна книга

    За да можете да го копирате тековниот лист во која било отворена работна книга, можете да креирате UserForm (наречен UserForm1 ) со контрола ListBox ( именувана ListBox1 ) и две копчиња:

    Следно, кликнете двапати на формата и залепете го кодот подолу во прозорецот Code:

    Public Selected Workbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Every wbk In Application.Workbooks ListBox1.AddItem (wbk.Име) Следен крај Под приватна под командаButton1_Click() Ако ListBox1.ListIndex > -1 Потоа SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide End Sub

    Со UserForm на место, можете да користите едно од следниве макроа за да ги копиратеактивен лист во работната книга по ваш избор.

    Копирај го листот на почетокот на избраната работна книга :

    Јавна под CopySheetToBeginningAnotherWorkbook() Вчитај UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook " " ) Потоа activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook). Sheets(1) End If Unload UserForm1 End Sub

    Копирај го листот на крајот на избраната работна книга :

    Public Sub CopySheetToEndAnotherWorkbook() Вчитај UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Потоа activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook). Sheets( _ Workbooks(SelectCooledFormW1ork). End Sub

    Кога работи во Excel, макрото ќе ви прикаже список со сите моментално отворени работни книги. Го избирате потребниот и кликнете OK:

    Excel макро за да го копирате листот и да го преименувате

    Кога копирате лист во Excel, на репликата се дава име во стандардниот формат како Лист 1 (2) . Следниве макроа може да ве поштедат од маката за рачно менување на стандардното име.

    Овој код го дуплира активниот работен лист, ја именува копијата како „Тестен лист“ (можете слободно да го замените со кое било друго име што сакате) , и го става копираниот лист на крајот од тековната работна книга.

    Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Seets.Count) На грешка Продолжи Следна activeSheet.Name =„Test Sheet“ End Sub

    За да му дозволите на корисникот да го одреди името за копираниот лист , користете го овој код:

    Public Sub CopySheetAndRename() Затемни го newName како низа на грешка Продолжи Следна newName = InputBox( "Внесете го името за копираниот работен лист" ) If newName "" Потоа activeSheet.Copy After:=Worksheets(Seets.Count) На грешка Продолжи Следна activeSheet.Name = newName Крај Ако Крај Под

    По извршувањето, макрото го прикажува следното поле за внесување, во кое го внесувате саканото име и притиснете OK:

    Excel макро за да го копирате листот и да го преименувате врз основа на вредноста на ќелијата

    Во во некои ситуации, можеби е попогодно да се именува копија со одредена вредност на ќелијата, на пример, заглавие на колона. За ова, едноставно го земате горниот код и ја внесувате вредноста на тековно избраната ќелија во полето за внесување автоматски. Како и со претходниот пример, копијата ќе биде поставена на крајот од активната работна книга.

    Најнезгодниот дел ќе биде вашите корисници секогаш да ја изберат точната ќелија пред да ја стартуваат макрото :)

    Јавен под CopySheetAndRenameByCell() Затемнето newName како низа на грешка Продолжи Следна newName = InputBox( "Внесете го името за копираниот работен лист" , "Копирај работен лист" , ActiveCell.Value) Ако newName "" Потоа activeSheet. Копирај After:=Работни листови(Листови.Count) На грешка Продолжи Следна activeSheet.Name = newName Крај Ако End Sub

    Алтернативно, може да тврдокодираш адресата наќелијата со која треба да се именува копијата, ќелијата A1 во долунаведениот код. За да го именувате копираниот работен лист врз основа на друга ќелија, заменете го A1 со соодветна референца на ќелијата.

    Јавна под CopySheetAndRenameByCell2() Затемнети wks како работен лист Поставете wks = активен лист activeSheet. Копирај После:=Работни листови(Листови. Број) Ако wks.Опсег ( "A1" ).Value "" then On Error Resume Next activeSheet.Name = wks.Range( "A1" ).Value End If wks.Activate End Sub

    Макро за копирање на работниот лист во затворена работна книга

    Ова макро го копира активниот лист до крајот на затворена работна книга. Името на друга работна книга не е наведено во кодот - макрото ќе го отвори стандардниот прозорец на Windows Explorer и ќе ви овозможи да изберете која било одредишна датотека:

    Откако ќе ја изберете датотеката и кликнете Отвори , макрото ќе го копира активниот лист и автоматски ќе ја затвори целната работна книга.

    Јавна под CopySheetToClosedWorkbook() Затемнување Име на датотеката Затемнување затворена Книга како работна книга Затемнете го актуелниот лист како работен лист Име на датотека = Апликација.GetOpenFilename( „Excel Датотеки (*.xlsx), *.xlsx" ) Ако Името на датотеката е неточно, тогаш Application.ScreenUpdating = Неточно поставено currentSheet = Application.activeSheet Множество затворена книга = Работни книги. Отвори (Име на датотека) currentSheet.Copy After:=closedBook.Seets(closedBook.Worksheets.Count) затворенаКнига. Затвори ( Точно ) Application.ScreenUpdating = True End If End Sub

    Excel VBA за копирање лист од друга работна книга безотворање

    Ова макро ви овозможува да копирате работен лист од друга датотека на Excel без да го отворите. Копираниот лист ќе биде вметнат на крајот од тековната работна книга.

    Само не заборавајте да направите неколку замени во кодот:

    • C:\Users\XXX\Documents\ Target_Book.xlsx треба да се смени во вистинската патека и име на работната книга од која сакате да копирате лист.
    • Листот1 треба да се замени со името на листот што сакате да го копирате.
    Јавен под CopySheetFromClosedWorkbook() Затемнета изворна книга како апликација за работна книга.ScreenUpdating = Неточно поставено sourceBook = Работни книги. Отвори ( "C:\Users\XXX\Documents\Target_Book.xlsx" ) sourceBook.Sheets( "Sheet1" ).Copy After:=This Workbook.Sheets(ThisWorkbook. Sheets.Count) sourceBook. Затвори Application.ScreenUpdating = True End Sub

    Excel VBA за да се дуплира листот повеќе пати

    Понекогаш, можеби ќе треба да го дуплирате истиот лист повеќе од еднаш, на пример да тестирате различни формули на истото множество податоци. Ова може лесно да се направи со следново макро.

    Public Sub DuplicateSheetMultipleTimes() Затемнети n како цел број на грешка Продолжи Next n = InputBox( "Колку копии од активниот лист сакате да направите?" ) Ако n > = 1 Потоа For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    Отворете го оригиналниот лист, извршете го макрото, наведете колку копии од активниот листсакате да направите и кликнете OK :

    Како да се дуплираат листови во Excel со VBA

    За да копирате лист во Excel со едно од горенаведените макроа, можете или да го вметнете кодот VBA во вашата книга или да извршите макро од нашиот примерок на работна книга.

    Како да додадете макро во вашата работна книга

    За да го вметнете код во вашата работна книга, направете ги овие чекори:

    1. Отворете го работниот лист што сакате да го копирате.
    2. Притиснете Alt + F11 за да го отворите уредникот на Visual Basic.
    3. Вклучено левото окно, кликнете со десното копче на This Workbook , а потоа кликнете Вметни > Модул .
    4. Залепете го кодот во прозорецот Code.
    5. Притиснете F5 за да го извршите макрото.

    За детални инструкции чекор-по-чекор, погледнете Како да вметнете VBA код во Excel.

    Како да се изврши макро од нашиот примерок на работна книга

    Алтернативно, можете да ја преземете нашата примерок на работна книга на Дупликат листови на Excel и да го извршите кодот од таму.

    Примерокот на работната книга ги содржи следните макроа:

    CopySheetToNewWorkbook - го копира cu изнајми работен лист во нова работна книга.

    CopySelectedSheets - копира повеќе листови што ќе ги изберете во нова работна книга.

    CopySheetToBeginningAnotherWorkbook - го копира активниот лист до почетокот на друга работна книга.

    CopySheetToEndAnotherWorkbook - го копира активниот лист до крајот на друга датотека Excel.

    CopySheetAndRename - ја дуплира тековната лист,го преименува како што е наведено од корисникот и ја става копијата по сите други листови во тековната работна книга.

    CopySheetAndRenamePredefined - го дуплира активниот лист, дава тврдокодирано име на копијата и го става на крајот од тековната работна книга.

    CopySheetAndRenameByCell - прави копија од активниот лист и го преименува врз основа на избраната вредност на ќелијата.

    CopySheetAndRenameByCell2 - го копира активниот лист и го преименува врз основа на тврдокодираната адреса на ќелијата.

    CopySheetToClosedWorkbook - ви овозможува да копирате лист во затворена работна книга.

    CopySheetFromClosedWorkbook - ви овозможува да копирате лист од друга датотека Excel без да ја отворите.

    DuplicateSheetMultipleTimes - ви овозможува да дуплирате лист во Excel повеќе пати.

    Да стартувајте го макрото во вашиот Excel, само направете го следново:

    1. Отворете ја преземената работна книга и овозможете ја содржината ако ви биде побарано.
    2. Отворете ја сопствената работна книга и одете до листот што сакате да го копирај.
    3. <1 7>Во вашиот работен лист, притиснете Alt + F8 , изберете го макрото од интерес и кликнете Изврши .

    Така можете да дуплирате лист во Excel со VBA. Ви благодарам што прочитавте и се надевам дека ќе се видиме на нашиот блог следната недела!

    Мајкл Браун е посветен технолошки ентузијаст со страст за поедноставување на сложените процеси користејќи софтверски алатки. Со повеќе од една деценија искуство во технолошката индустрија, тој ги усоврши своите вештини во Microsoft Excel и Outlook, како и Google Sheets и Docs. Блогот на Мајкл е посветен на споделување на своето знаење и експертиза со другите, обезбедувајќи лесни за следење совети и упатства за подобрување на продуктивноста и ефикасноста. Без разлика дали сте искусен професионалец или почетник, блогот на Мајкл нуди вредни сознанија и практични совети за да го извлечете максимумот од овие основни софтверски алатки.