Meriv çawa pelek li Excel bi VBA-yê dubare dike

  • Vê Parve Bikin
Michael Brown

Dersdar berhevokek makroyan peyda dike da ku pelên li Excel-ê dubare bikin: li gorî nirxa şaneyê kopî bikin û biguherînin, pir pelan kopî bikin, pelek xebatek çalak bêyî vekirina wê li pelek din kopî bikin û hêj bêtir.

Kopîkirina pelan bi destan li Excel pir zû û rasterast e... heke tenê yek an du caran were kirin. Duberkirina gelek pelan gelek caran bêzar û dem dixwe. Li ser vê rûpelê, hûn ê çend makroyên bikêrhatî bibînin ku vî karî bixweber bikin.

    Excel VBA ku pelê li pirtûka xebatê ya nû kopî bike

    Ev makroya yek-xêz a herî hêsan dike bi rastî navê wê çi pêşniyar dike - pelê çalak li pirtûkek xebatê ya nû kopî dike.

    Sub CopySheetToNewWorkbook() ActiveSheet.Copy End Sub

    Gelek pelan di Excel de bi VBA kopî bikin

    Heke hûn dixwazin çend pelan ji pirtûka xebatê ya çalak li ya nû kopî bikin, hemî pelên xebatê yên balkêş hilbijêrin û vê makroyê bişopînin:

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

    Excel VBA ji bo kopîkirina pelê li pirtûkek din a xebatê

    Li gor cihê ku hûn dixwazin pelê kopî têxin têxin, yek ji makroyên jêrîn bikar bînin.

    Rûpelê kopî bikin destpêka pirtûkek din a xebatê

    Ev makro pelê çalak berî kopî dike. hemû pelên xebatê yên din ên di pelê meqsedê de, di vê nimûneyê de Pirtûk1 . Ji bo kopîkirina pelê din, "Book1.xlsx" bi tevahî navê pirtûka xebatê ya hedefa xwe veguherîne.

    Bingeha GiştîCopySheetToBeginningAnotherWorkbook() activeSheet. Berê kopî bike:=Pirtûkên Xebatê("Book1.xlsx" ).Sheets(1) Dawî Bine

    Pêxemberê kopî bike dawiya pirtûkeke din

    Ev perçeya kodê pelgeya xebatê ya çalak dubare dike û kopiyê dide dawiya Pirtûk1 . Dîsa, ji kerema xwe ji bîr mekin ku "Book1.xlsx" bi navê pirtûka xebatê ya cihê xwe biguhezînin.

    Bingeha Giştî ya CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Pirtûkên Xebatê("Book1.xlsx" ).Sheets(Pirtûka Xebatê("Book1.xlsx " ).Worksheets.Count) End Sub

    Nîşe. Ji bo ku makro kar bikin, divê pirtûka xebatê ya armanc li ser dîska we an tora we were hilanîn.

    Rûpelê li pirtûkek xebatê ya hilbijartî kopî bikin

    Ji bo ku hûn bikaribin pelê heyî li pirtûkek xebatê ya vekirî kopî bikin, tu dikarî BikarhênerFormek (bi navê UserForm1 ) bi kontrolek ListBox ( ListBox1 bi navê ) û du bişkokan biafirînî:

    Piştre, du caran li formê bikirtînin û koda jêrîn di pencereya Kodê de bişopînin:

    Pirtûka Hilbijartî ya Giştî Wekî Bineya Taybet a Bin UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear Ji bo Her wbk Di Application.Workbooks ListBox1.AddItem (wbk.Name) Dawiya Paşê Sub Private Sub CommandButton1_Click() Heke ListBox1.ListIndex > -1 Dûv re SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide End Sub

    Ligel Forma Bikarhêner li cîh, hûn dikarin yek ji jêrîn bikar bînin makroyên kopî bikinkaxeza çalak li pirtûka xebatê ya ku te hilbijartiye.

    Rûpela li ser destpêka pirtûka xebatê ya hilbijartî kopî bike :

    Bin CopySheetToBeginningAnotherWorkbook() Load UserForm1 UserForm1.Show Ger (UserForm1.SelectedWorkbook " " ) Paşê activeSheet. Berê kopî bikî:=Pirtûkên Xebatê(UserForm1.SelectedWorkbook). Sheets(1) Bi dawî bibe Ger Unload UserForm1 End Sub

    Rûpelê li dawiya pirtûka xebatê ya hilbijartî kopî bike :

    Bingeha Giştî CopySheetToEndAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Paşê activeSheet.Copy Piştî:=Pirtûkên Xebatê( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(_UserFormCooledFormsheet. End Sub

    Dema ku li Excel tê xebitandin, makro dê navnîşek hemî pirtûkên xebatê yên niha vekirî nîşanî we bide. Tu ya pêwîst hildibijêrî û OK bikirtînî:

    Makroya Excel ji bo kopîkirina pelê û nûvekirina navê

    Dema ku tu pelek di Excel de kopî bikî, kopiyek tê dayîn. Navê di forma xwerû de wekî Sheet1 (2) . Makroyên jêrîn dikarin ji we re ji tengasiya guhertina navê xwerû bi destan dûr bixin.

    Ev kod pelgeya xebatê ya çalak dubare dike, kopiyê wekî "Pelga testê" bi nav dike (hûn azad in ku navekî din ku hûn dixwazin biguhezînin) , û pelê kopîkirî li dawiya pirtûka xebatê ya heyî bi cih dike.

    Bingeha Giştî ya CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) Ser Çewtî Vegere Paş ActiveSheet.Name ="Test Sheet" End Sub

    Ji bo ku bikarhêner bihêle navê pelê kopîkirî diyar bike , vê kodê bi kar bîne:

    Bingeha Giştî ya CopySheetAndRename() Dim newName Wek String Li ser Çewtî Ji nûve Paşê newName = InputBox("Navê pelgeya xebatê ya kopîkirî binivîse") Heke newName "" Paşê activeSheet.Copy Piştî:=Pelgeyên Xebatê(Sheets.Count) Li Ser Çewtiyê Vegere Paşê ActiveSheet.Name = newName Dawî Heke End Sub

    Piştî xebitandinê, makro qutiya têketinê ya jêrîn nîşan dide, ku tê de hûn navê xwestinê dinivîsin û OK pêl pê dikin:

    Makroya Excel ku pelê kopî bike û li gorî nirxa şaneyê nav bike

    Di di hin rewşan de, dibe ku hêsantir be ku meriv kopiyek bi nirxek hucreyek taybetî bi nav bike, mînakî, sernavek stûnek. Ji bo vê, hûn bi tenê koda jorîn digirin û nirxa hucreya ku niha hilbijartî bixweber li qutiya têketinê peyda dikin. Mîna mînaka berê, nusxeyek dê li dawiya pirtûka xebatê ya çalak were danîn.

    Beşê herî dijwar ew e ku bikarhênerên we her dem berî xebitandinê şaneya rast hilbijêrin. makro :)

    Bingeha Giştî ya CopySheetAndRenameByCell() Dim newName Wek String Li ser Çewtî Ji nûve Paş newName = InputBox( "Navê pelgeya xebatê ya kopîkirî binivîse" , "Pelgeya xebatê kopî bike" , ActiveCell.Value) Heke newName "" Paşê activeSheet. Copy After:=Worksheets(Sheets.Count) Li Ser Çewtiyê Vegere Paşê activeSheet.Name = newName Dawî Heke End Sub

    Alternatîf, hûn dikarin kodkirina hişk navnîşanaşaneya ya ku divê kopî jê re were binavkirin, di koda jêrîn de şaneya A1. Ji bo navê pelgeya xebatê ya kopîkirî li ser bingehê şaneyek din bi nav bike, A1 bi referansa şaneya guncaw biguhêre.

    Bingeha Giştî ya CopySheetAndRenameByCell2() Wks kêm wekî Bernameya Xebatê Set wks = ActiveSheet activeSheet. Kopîkirin Piştî:=Parpelên Xebatê(Şeets.Hejmar) Heke wks.Range ( "A1" ).Nirx "" Paşê Ser Çewtî Vegere Paşê ActiveSheet.Name = wks.Range( "A1" ).Nirx Dawî Heke wks. End Sub Subaktîv bike

    Makro ji bo kopîkirina pelxebatê li pirtûkek xebatê ya girtî

    Ev makro pelê çalak di dawiya pirtûkek xebatê ya girtî de kopî dike. Navê pirtûkek din a xebatê di kodê de nehatiye diyar kirin - makro dê pencereya standard Windows Explorer-ê veke û dihêle hûn pelê cîhê hilbijêrin:

    Piştî ku hûn pelê hilbijêrin û Vekirin bikirtînin, makro dê pelika çalak kopî bike û pirtûka xebatê ya armanc bixweber bigire.

    Bingeha Giştî ya CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Pelên (*.xlsx), *.xlsx" ) GerNavê pelê Derewe Paşê Application.ScreenUpdating = Danasîna Derewî currentSheet = Application.activeSheet Set girtî Pirtûk = Pirtûkên Xebatê. Veke (Navê pelê) currentSheet.Copy Piştî:=Pirtûka girtî.Sheets(closedBook.Worksheets.Count) Pirtûka girtî. Girtin (Rast) Application.ScreenUpdating = Dawiya Rast Ger End Sub

    Excel VBA ji bo kopîkirina pelê ji pirtûka xebatê ya din bêyîvebûn

    Ev makro dihêle hûn bêyî vekirina pelek xebatê ji pelek din a Excel kopî bikin. Bernameya kopîkirî dê di dawiya pirtûka xebatê ya heyî de were danîn.

    Tenê ji bîr mekin ku hûn di kodê de du guhertinan bikin:

    • C:\Users\XXX\Documents\ Target_Book.xlsx divê bi riya rastîn û navê pirtûka xebatê ya ku hûn dixwazin pelek jê kopî bikin were guheztin.
    • Divê Sheet1 bi navê pelê ku hûn dixwazin kopî bikin were guheztin.
    Bingeha Giştî ya CopySheetFromClosedWorkbook() Pirtûka çavkaniyê wekî Serlêdana Pirtûka Xebatê dimire.ScreenUpdating = Danasîna Derewîn SourceBook = Pirtûkên Xebatê. Veke ("C:\Users\XXX\Documents\Target_Book.xlsx") sourceBook.Sheets("Sheet1" ).Piştî kopî bike:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook. Bigirin Application.ScreenUpdating = Bingeha Rastî ya Dawî

    Excel VBA ku pelê gelek caran dubare bike

    Carinan, dibe ku hewce be ku hûn heman pelê ji carekê zêdetir dubare bikin, mînakî ku hûn formulên cihêreng li ser heman berhevoka daneyê biceribînin. Ev yek bi makroya jêrîn bi hêsanî dikare were kirin.

    Public Sub DuplicateSheetMultipleTimes() Dim n Wek Tevjimar Li Ser Çewtiyê Vegere Paşê n = InputBox( "Hûn dixwazin çend kopiyên pelê çalak bikî?" ) Heke n > = 1 Paşê Ji bo numtimes = 1 Ji bo n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Dawiya Paşê Heke End Sub

    Pareya orîjînal veke, makroyê bimeşîne, çend kopiyên pelê çalak diyar biketu dixwazî ​​çêkî, û bitikîne OK :

    Meriv çawa pelên di Excel de bi VBA-yê dubare dike

    Ji bo kopîkirina pelek di Excel de bi yek ji makroyên jorîn re, hûn dikarin koda VBA-yê têxin nav pirtûka xwe an jî makroyek ji pirtûka meya xebatê ya nimûneyê bimeşînin.

    Çawa meriv makroyekê li pirtûka xwe ya xebatê zêde bike

    Ji bo têxê koda di pirtûka xwe de, van gavan bi cih bînin:

    1. Pêxebata ku hûn dixwazin kopî bikin vekin.
    2. Alt + F11 bikirtînin da ku Edîtorê Visual Basic vekin.
    3. Li ser li pencereya çepê, rast-klîk bike ThisWorkbook , û paşê bitikîne Têxe > Modul .
    4. Kodê di pencereya Kodê de bikişîne.
    5. F5 bitikîne da ku makroyê bixebitîne.

    Ji bo rêwerzên hûrgulî gav-bi-gav, ji kerema xwe binêre Çawa koda VBA di Excel de têxe.

    Çawa têxe makroyek ji pirtûka meya xebatê ya nimûne

    Alternatîf, hûn dikarin pirtûka meya xebatê ya nimûne dakêşin pelên Excel-ê Dupat bikin û kodê ji wir bimeşînin.

    Di pirtûka xebatê ya nimûneyê de makroyên jêrîn hene:

    CopySheetToNewWorkbook - cu kopî dike rrent pelgeya xebatê ya nû.

    CopySelectedSheets - gelek pelên ku hûn hildibijêrin li pirtûkek xebatê ya nû kopî dike.

    CopySheetToBeginningAnotherWorkbook - pelê çalak kopî dike berbi destpêka pirtûkek din a xebatê.

    CopySheetToEndAnotherWorkbook - pelê çalak li dawiya pelek din a Excel kopî dike.

    CopySheetAndRename - ya niha dubare dike rûberê nivînê,wek ku bikarhêner diyar kiriye navê wê diguherîne, û nusxeyê dide dû hemû pelên din ên pirtûka xebatê ya heyî.

    CopySheetAndRenamePredefined - pelê çalak dubare dike, navekî hişkkirî dide nusxeyê û bi cih dike. di dawiya pirtûka xebatê ya heyî de.

    CopySheetAndRenameByCell - kopiyek pelê çalak çêdike û li gorî nirxa şaneya hilbijartî navê wê diguherîne.

    CopySheetAndRenameByCell2 - pelê çalak kopî dike û li gorî navnîşana şaneya hişkkirî nav lê dike.

    CopySheetToClosedWorkbook - destûrê dide te ku hûn pelê li pirtûkek xebatê ya girtî kopî bikin.

    CopySheetFromClosedWorkbook - dihêle hûn pelek ji pelek din a Excel-ê bêyî vekirina wê kopî bikin.

    DuplicateSheetMultipleTimes - dihêle hûn pelek di Excel de gelek caran dubare bikin.

    Ji bo makroyê di Excel-a xwe de bixebitîne, tenê van tiştan bike:

    1. Pirtûka xebatê ya dakêşandî veke û heke were xwestin naverokê çalak bike.
    2. Pirtûka xebatê ya xwe veke û berbi kaxeza ku tu dixwazî ​​bigerî kopî bikin.
    3. <1 7>Di kargeha xwe de, Alt + F8 bikirtînin, makroya eleqedar hilbijêrin, û bikirtînin Run .

    Bi vî awayî hûn dikarin dubare bikin. pelek li Excel bi VBA. Ez ji bo xwendinê spas dikim û hêvî dikim ku hefteya pêş me we li ser bloga xwe bibînim!

    Michael Brown dilxwazek teknolojiyê ya dilsoz e ku bi hewesek hêsankirina pêvajoyên tevlihev bi karanîna amûrên nermalavê ye. Bi zêdetirî deh salan ezmûnek di pîşesaziya teknolojiyê de, wî jêhatîbûna xwe di Microsoft Excel û Outlook, û her weha Google Sheets û Docs de pêş xist. Bloga Michael ji bo parvekirina zanyarî û pisporiya xwe bi kesên din re veqetandî ye, ji bo baştirkirina hilberî û karîgeriyê serişte û dersên hêsan-şopandinê peyda dike. Çi hûn pisporek demsalî ne an jî destpêkek in, bloga Michael ji bo ku hûn herî zêde ji van amûrên nermalava bingehîn sûd werbigirin, têgihiştinên hêja û şîretên pratîkî pêşkêşî dike.