Talaan ng nilalaman
Ang tutorial ay nagbibigay ng isang koleksyon ng mga macro upang i-duplicate ang mga sheet sa Excel: kopyahin at palitan ang pangalan batay sa halaga ng cell, kopyahin ang maramihang mga sheet, kopyahin ang isang aktibong worksheet sa isa pang file nang hindi ito binubuksan, at higit pa.
Ang manu-manong pagkopya ng mga sheet sa Excel ay medyo mabilis at prangka... kung isa o dalawang beses lang gagawin. Nakakabagot at nakakaubos ng oras ang pagdo-duplicate ng maraming sheet nang maraming beses. Sa page na ito, makakahanap ka ng ilang mga kapaki-pakinabang na macro para i-automate ang gawaing ito.
Excel VBA para kumopya ng sheet sa bagong workbook
Ginagawa ng pinakasimpleng one-line na macro na ito kung ano mismo ang iminumungkahi ng pangalan nito - kinokopya ang aktibong sheet sa isang bagong workbook.
Public Sub CopySheetToNewWorkbook() activeSheet.Copy End SubKopyahin ang maramihang mga sheet sa Excel gamit ang VBA
Kung gusto mong kumopya ng ilang sheet mula sa aktibong workbook patungo sa bago, piliin ang lahat ng worksheet ng interes at patakbuhin ang macro na ito:
Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End SubExcel VBA para kopyahin ang sheet sa isa pang workbook
Depende sa kung saan mo gustong ipasok ang nakopyang sheet, gamitin ang isa sa mga sumusunod na macro.
Kopyahin ang sheet sa simula ng isa pang workbook
Kinokopya ng macro na ito ang aktibong sheet bago lahat ng iba pang worksheet sa patutunguhang file, Book1 sa halimbawang ito. Upang kopyahin sa isa pang file, palitan ang "Book1.xlsx" ng buong pangalan ng iyong target na workbook.
Public SubCopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks( "Book1.xlsx" ). Sheets(1) End SubKopyahin ang sheet sa dulo ng isa pang workbook
Ang piraso ng code na ito ay duplicate ang aktibong worksheet at inilalagay ang kopya sa dulo ng Book1 . Muli, mangyaring tandaan na palitan ang "Book1.xlsx" ng pangalan ng iyong patutunguhang workbook.
Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx " ).Worksheets.Count) End SubTandaan. Para gumana ang mga macro, dapat na i-save ang target na workbook sa iyong hard drive o network.
Kopyahin ang sheet sa isang napiling workbook
Upang makopya ang kasalukuyang sheet sa anumang bukas na workbook, maaari kang lumikha ng UserForm (pinangalanang UserForm1 ) na may kontrol na ListBox ( pinangalanang ListBox1 ) at dalawang button:
Susunod, i-double click ang form at i-paste ang code sa ibaba sa window ng Code:
Public SelectedWorkbook Bilang String Pribadong Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear Para sa Bawat wbk Sa Application.Workbooks ListBox1.AddItem (wbk.Name) Next End Sub Private Sub CommandButton1_Click() Kung ListBox1.ListIndex > -1 Pagkatapos SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide End SubGamit ang UserForm sa lugar, maaari mong gamitin ang isa sa mga sumusunod macros para kopyahin angaktibong sheet sa workbook na iyong pinili.
Kopyahin ang sheet sa simula ng napiling workbook :
Pampublikong Sub CopySheetToBeginningAnotherWorkbook() I-load ang UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook " " ) Pagkatapos activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End SubKopyahin ang sheet sa end ng napiling workbook :
Public Sub CopySheetToEndAnotherWorkbook() I-load ang UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Pagkatapos activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserWork1.SelectedWorkbook). End SubKapag tumakbo sa Excel, ipapakita sa iyo ng macro ang isang listahan ng lahat ng kasalukuyang nakabukas na workbook. Piliin mo ang kailangan at i-click ang OK:
Excel macro para kopyahin ang sheet at palitan ang pangalan
Kapag kumopya ka ng sheet sa Excel, bibigyan ang replica ng pangalan sa default na format tulad ng Sheet1 (2) . Ang mga sumusunod na macro ay makakaligtas sa iyong problema sa pagpapalit ng default na pangalan nang manu-mano.
Duplicate ng code na ito ang aktibong worksheet, pinangalanan ang kopya bilang "Test Sheet" (malaya mong palitan ito ng anumang iba pang pangalan na gusto mo) , at inilalagay ang kinopyang sheet sa dulo ng kasalukuyang workbook.
Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) Sa Error Ipagpatuloy ang Susunod activeSheet.Name ="Test Sheet" End SubUpang payagan ang user na tukuyin ang pangalan para sa kinopyang sheet , gamitin ang code na ito:
Public Sub CopySheetAndRename() Dim newName Bilang String Sa Error Ipagpatuloy ang Susunod newName = InputBox( "Ipasok ang pangalan para sa kinopyang worksheet") Kung newName "" Pagkatapos activeSheet.Copy After:=Worksheets(Sheets.Count) Sa Error Ipagpatuloy ang Susunod activeSheet.Name = newName End If End SubSa pagtakbo, ang macro ipinapakita ang sumusunod na kahon ng pag-input, kung saan ita-type mo ang gustong pangalan at pinindot ang OK:
Excel macro upang kopyahin ang sheet at palitan ang pangalan batay sa halaga ng cell
Sa ilang sitwasyon, maaaring mas maginhawang pangalanan ang isang kopya na may partikular na halaga ng cell, halimbawa, isang header ng column. Para dito, kunin mo lang ang code sa itaas at awtomatikong ibigay ang halaga ng kasalukuyang napiling cell sa input box. Tulad ng nakaraang halimbawa, ilalagay ang kopya sa dulo ng aktibong workbook.
Ang pinakamahirap na bahagi ay ang palaging piliin ng iyong mga user ang tamang cell bago tumakbo ang macro :)
Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Ipasok ang pangalan para sa kinopyang worksheet" , "Kopyahin ang worksheet" , ActiveCell.Value) Kung newName "" Pagkatapos ay activeSheet. Kopyahin Pagkatapos:=Worksheets(Sheets.Count) Sa Error Ipagpatuloy ang Susunod activeSheet.Name = newName End Kung End SubBilang kahalili, maaari mong hardcode ang address ngang cell kung saan dapat pangalanan ang kopya, cell A1 sa ibabang code. Upang pangalanan ang kinopyang worksheet batay sa isa pang cell, palitan ang A1 ng naaangkop na cell reference.
Public Sub CopySheetAndRenameByCell2() Dim wks Bilang Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) Kung wks.Range ( "A1" ).Value "" Then On Error Resume Next activeSheet.Name = wks.Range( "A1" ).Value End Kung wks.Activate End SubMacro para kopyahin ang worksheet sa isang closed workbook
Kinokopya ng macro na ito ang aktibong sheet sa dulo ng isang saradong workbook. Ang pangalan ng isa pang workbook ay hindi tinukoy sa code - bubuksan ng macro ang karaniwang window ng Windows Explorer at magbibigay-daan sa iyong pumili ng anumang patutunguhang file:
Pagkatapos mong piliin ang file at i-click ang Buksan , kokopyahin ng macro ang aktibong sheet at awtomatikong isasara ang target na workbook.
Pampublikong Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook Bilang Workbook Dim currentSheet Bilang Worksheet fileName = Application.GetOpenFilename( "Excel Mga File (*.xlsx), *.xlsx" ) Kung Mali ang Pangalan ng file Pagkatapos Application.ScreenUpdating = False Set currentSheet = Application.activeSheet Set closedBook = Workbooks. Buksan ang (fileName) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count) closedBook. Isara ( True ) Application.ScreenUpdating = True End If End SubExcel VBA para kumopya ng sheet mula sa isa pang workbook nang walangopening
Ang macro na ito ay nagbibigay-daan sa iyong kumopya ng worksheet mula sa isa pang Excel file nang hindi ito binubuksan. Ang kinopyang sheet ay ilalagay sa dulo ng kasalukuyang workbook.
Tandaan lang na gumawa ng ilang kapalit sa code:
- C:\Users\XXX\Documents\ Ang Target_Book.xlsx ay dapat mapalitan sa aktwal na landas at pangalan ng workbook kung saan mo gustong kopyahin ang isang sheet.
- Dapat mapalitan ang Sheet1 ng pangalan ng sheet na gusto mong kopyahin.
Excel VBA upang i-duplicate ang sheet nang maraming beses
Minsan, maaaring kailanganin mong i-duplicate ang parehong sheet nang higit sa isang beses, halimbawa upang subukan ang iba't ibang mga formula sa parehong set ng data. Madali itong magawa gamit ang sumusunod na macro.
Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Ilang kopya ng aktibong sheet ang gusto mong gawin?" ) Kung n > = 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End SubBuksan ang orihinal na sheet, patakbuhin ang macro, tukuyin kung ilang kopya ng active sheetgusto mong gawin, at i-click ang OK :
Paano i-duplicate ang mga sheet sa Excel gamit ang VBA
Upang kopyahin ang isang sheet sa Excel gamit ang isa sa mga macro sa itaas, maaari mong ipasok ang VBA code sa iyong sariling aklat o magpatakbo ng macro mula sa aming sample na workbook.
Paano magdagdag ng macro sa iyong workbook
Upang ipasok ang code sa iyong workbook, gawin ang mga hakbang na ito:
- Buksan ang worksheet na gusto mong kopyahin.
- Pindutin ang Alt + F11 upang buksan ang Visual Basic Editor.
- Naka-on sa kaliwang pane, i-right-click ang ThisWorkbook , at pagkatapos ay i-click ang Insert > Module .
- I-paste ang code sa Code window.
- Pindutin ang F5 upang patakbuhin ang macro.
Para sa mga detalyadong sunud-sunod na tagubilin, pakitingnan ang Paano magpasok ng VBA code sa Excel.
Paano tumakbo isang macro mula sa aming sample workbook
Maaari mong i-download ang aming sample workbook sa Duplicate Excel Sheets at patakbuhin ang code mula doon.
Ang sample workbook ay naglalaman ng mga sumusunod na macro:
CopySheetToNewWorkbook - kinokopya ang cu rrent worksheet sa isang bagong workbook.
CopySelectedSheets - kinokopya ang maraming sheet na pipiliin mo sa isang bagong workbook.
CopySheetToBeginningAnotherWorkbook - kinokopya ang aktibong sheet sa simula ng isa pang workbook.
CopySheetToEndAnotherWorkbook - kinokopya ang aktibong sheet sa dulo ng isa pang Excel file.
CopySheetAndRename - kino-duplicate ang kasalukuyang sheet,pinapalitan ito ng pangalan bilang tinukoy ng user, at inilalagay ang kopya pagkatapos ng lahat ng iba pang mga sheet sa kasalukuyang workbook.
CopySheetAndRenamePredefined - kino-duplicate ang aktibong sheet, nagbibigay ng hardcoded na pangalan sa kopya at inilalagay ito sa dulo ng kasalukuyang workbook.
CopySheetAndRenameByCell - gumagawa ng kopya ng aktibong sheet at pinapalitan ang pangalan nito batay sa napiling cell value.
CopySheetAndRenameByCell2 - kinokopya ang aktibong sheet at palitan ang pangalan nito batay sa naka-hardcode na cell address.
CopySheetToClosedWorkbook - nagbibigay-daan sa iyong kumopya ng sheet sa isang saradong workbook.
CopySheetFromClosedWorkbook - nagbibigay-daan sa iyong kumopya ng sheet mula sa isa pang Excel file nang hindi ito binubuksan.
DuplicateSheetMultipleTimes - hinahayaan kang i-duplicate ang isang sheet sa Excel nang maraming beses.
Para sa patakbuhin ang macro sa iyong Excel, gawin lang ang sumusunod:
- Buksan ang na-download na workbook at paganahin ang content kung sinenyasan.
- Buksan ang iyong sariling workbook at mag-navigate sa sheet na gusto mong kopyahin. <1 7>Sa iyong worksheet, pindutin ang Alt + F8 , piliin ang macro ng interes, at i-click ang Run .
Ganyan ka makaka-duplicate isang sheet sa Excel na may VBA. Salamat sa pagbabasa at umaasa akong makita ka sa aming blog sa susunod na linggo!