Як дубляваць аркуш у 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 для капіравання аркуша ў іншую працоўную кнігу

    У залежнасці ад таго, куды вы хочаце ўставіць скапіраваны аркуш, выкарыстоўвайце адзін з наступных макрасаў.

    Скапіраваць аркуш у пачатак іншай кнігі

    Гэты макрас капіюе актыўны аркуш перад усе астатнія аркушы ў файле прызначэння, Book1 у гэтым прыкладзе. Каб скапіяваць у іншы файл, заменіце "Book1.xlsx" поўным імем мэтавай кнігі.

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

    Капіраваць аркуш у канец іншай кнігі

    Гэты фрагмент кода дублюе актыўны аркуш і змяшчае копію ў канец Book1 . Зноў жа, не забудзьце замяніць "Book1.xlsx" на назву вашай працоўнай кнігі прызначэння.

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

    Заўвага. Каб макрасы працавалі, мэтавая рабочая кніга павінна быць захавана на цвёрдым дыску або ў сетцы.

    Капіраваць аркуш у выбраную працоўную кнігу

    Каб мець магчымасць скапіяваць бягучы аркуш у любую адкрытую працоўную кнігу, вы можаце стварыць UserForm (з назвай UserForm1 ) з элементам кіравання ListBox ( з назвай ListBox1 ) і двума кнопкамі:

    Далей двойчы пстрыкніце форму і ўстаўце прыведзены ніжэй код у акне кода:

    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() Калі ListBox1.ListIndex > -1 Then SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide End Sub

    Калі UserForm на месцы, вы можаце выкарыстоўваць адно з наступнага макрасы для капіяванняактыўны аркуш у працоўную кнігу па вашаму выбару.

    Капіраваць аркуш у пачатак выбранай працоўнай кнігі :

    Public SubCopySheetToBeginningAnotherWorkbook() Загрузіць 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(UserForm1.SelectedWorkbook). _ Worksheets.Count) End If Выгрузіць UserForm1 End Sub

    Пры запуску ў Excel макрас пакажа вам спіс усіх адкрытых у цяперашні час працоўных кніг. Вы выбіраеце патрэбны і націскаеце OK:

    Макрас Excel для капіравання аркуша і перайменавання

    Калі вы капіруеце аркуш у Excel, копія атрымлівае імя ў фармаце па змаўчанні, напрыклад Аркуш1 (2) . Наступныя макрасы могуць пазбавіць вас ад клопатаў па змене назвы па змаўчанні ўручную.

    Гэты код дублюе актыўны аркуш, называе копію «Тэставы аркуш» (вы можаце замяніць яго на любое іншае імя, якое вам падабаецца) , і змяшчае скапіраваны аркуш у канец бягучай кнігі.

    Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name ="Тэставы аркуш" End Sub

    Каб дазволіць карыстальніку вызначыць імя для скапіраванага аркуша , выкарыстоўвайце гэты код:

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Увядзіце імя для скапіраванага аркуша" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Пасля запуску макрас адлюстроўвае наступнае поле ўводу, у якое вы ўводзіце патрэбнае імя і націскаеце OK:

    Макрас Excel для капіявання аркуша і перайменавання на аснове значэння ячэйкі

    У у некаторых сітуацыях можа быць зручней назваць копію з дапамогай пэўнага значэння ячэйкі, напрыклад, загалоўка слупка. Для гэтага вы проста бярэце прыведзены вышэй код і аўтаматычна ўносіце значэнне бягучай выбранай ячэйкі ў поле ўводу. Як і ў папярэднім прыкладзе, копія будзе размешчана ў канцы актыўнай працоўнай кнігі.

    Самай складанай часткай было б, каб карыстальнікі заўсёды выбіралі правільную ячэйку перад запускам макрас :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Увядзіце імя для скапіраванага аркуша" , "Капіяваць ліст" , ActiveCell.Value) Калі newName "" Тады activeSheet. Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    У якасці альтэрнатывы вы можаце закадзіраваць адрасвочка , па якой павінна быць названа копія, вочка A1 у кодзе ніжэй. Каб назваць скапіраваны аркуш на аснове іншай ячэйкі, заменіце A1 адпаведнай спасылкай на ячэйку.

    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

    Макрас для капіравання аркуша ў закрытую кнігу

    Гэты макрас капіруе актыўны ліст у канец закрытай кнігі. Імя іншай працоўнай кнігі не вызначана ў кодзе - макрас адкрые стандартнае акно правадыра Windows і дазволіць вам выбраць любы файл прызначэння:

    Пасля выбару файла і націсніце Адкрыць , макрас скапіруе актыўны аркуш і аўтаматычна закрые мэтавую кнігу.

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Файлы (*.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) closedBook. Close ( True ) Application.ScreenUpdating = True End If End Sub

    Excel VBA для капіявання аркуша з іншай працоўнай кнігі безадкрыццё

    Гэты макрас дазваляе скапіяваць аркуш з іншага файла Excel, не адкрываючы яго. Скапіраваны аркуш будзе ўстаўлены ў канец бягучай працоўнай кнігі.

    Проста не забудзьце зрабіць некалькі замен у кодзе:

    • C:\Users\XXX\Documents\ Target_Book.xlsx трэба змяніць на фактычны шлях і імя працоўнай кнігі, з якой вы хочаце скапіяваць аркуш.
    • Sheet1 трэба замяніць на назву аркуша, які вы хочаце скапіяваць.
    Public SubCopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Set sourceBook = Workbooks. Адкрыць ( "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 для дубліравання аркуша некалькі разоў

    Часам вам можа спатрэбіцца дубляваць адзін і той жа аркуш некалькі разоў, напрыклад, каб праверыць розныя формулы на адным наборы даных. Гэта можна лёгка зрабіць з дапамогай наступнага макраса.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Колькі копій актыўнага аркуша вы хочаце зрабіць?" ) If n > = 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    Адкрыйце зыходны аркуш, запусціце макрас, пакажыце, колькі копій актыўнага аркушавы хочаце зрабіць, і націсніце ОК :

    Як дубляваць аркушы ў Excel з дапамогай VBA

    Каб скапіяваць аркуш у Excel з дапамогай аднаго з вышэйпералічаных макрасаў вы можаце альбо ўставіць код VBA ў сваю ўласную кнігу, альбо запусціць макрас з нашага ўзору кнігі.

    Як дадаць макрас у вашу кнігу

    Каб уставіць код у вашай працоўнай кнізе, выканайце наступныя дзеянні:

    1. Адкрыйце працоўны аркуш, які хочаце скапіяваць.
    2. Націсніце Alt + F11, каб адкрыць рэдактар ​​Visual Basic.
    3. На на левай панэлі пстрыкніце правай кнопкай мышы ThisWorkbook , а затым націсніце Insert > Module .
    4. Устаўце код у акно Code.
    5. Націсніце F5, каб запусціць макрас.

    Падрабязныя пакрокавыя інструкцыі глядзіце ў раздзеле Як уставіць код VBA ў Excel.

    Як запусціць макрас з нашага ўзору кнігі

    У якасці альтэрнатывы вы можаце загрузіць наш узор кнігі ў Дублікаты лістоў Excel і запусціць код адтуль.

    Узор кнігі змяшчае наступныя макрасы:

    CopySheetToNewWorkbook - капіюе куб арандаваць аркуш у новую кнігу.

    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. Блог Майкла прысвечаны таму, каб падзяліцца сваімі ведамі і вопытам з іншымі, даючы простыя ў выкананні парады і падручнікі для павышэння прадукцыйнасці і эфектыўнасці. Незалежна ад таго, з'яўляецеся вы дасведчаным прафесіяналам або пачаткоўцам, блог Майкла прапануе каштоўную інфармацыю і практычныя парады, каб атрымаць максімальную аддачу ад гэтых неабходных праграмных інструментаў.