Hoe om 'n vel in Excel met VBA te dupliseer

  • Deel Dit
Michael Brown

Die tutoriaal verskaf 'n versameling makro's om velle in Excel te dupliseer: kopieer en hernoem op grond van selwaarde, kopieer veelvuldige velle, kopieer 'n aktiewe werkblad na 'n ander lêer sonder om dit oop te maak, en meer.

Om velle met die hand in Excel te kopieer is redelik vinnig en eenvoudig ... as dit net een of twee keer uitgevoer word. Om veelvuldige velle verskeie kere te dupliseer is vervelig en tydrowend. Op hierdie bladsy sal jy 'n handvol nuttige makro's vind om hierdie taak te outomatiseer.

    Excel VBA om blad na nuwe werkboek te kopieer

    Hierdie eenvoudigste eenlyn-makro doen presies wat sy naam aandui - kopieer die aktiewe blad na 'n nuwe werkboek.

    Publieke Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    Kopieer verskeie velle in Excel met VBA

    As jy wil kopieer verskeie velle van die aktiewe werkboek na 'n nuwe een, kies al die werkblaaie van belang en voer hierdie makro uit:

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

    Excel VBA om blad na 'n ander werkboek te kopieer

    Afhangende van waar jy die gekopieerde blad wil invoeg, gebruik een van die volgende makro's.

    Kopieer blad na die begin van 'n ander werkboek

    Hierdie makro kopieer die aktiewe blad voor alle ander werkblaaie in die bestemminglêer, Boek1 in hierdie voorbeeld. Om na 'n ander lêer te kopieer, vervang "Boek1.xlsx" met die volle naam van jou teikenwerkboek.

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

    Kopieer vel na die einde van 'n ander werkboek

    Hierdie stuk kode dupliseer die aktiewe werkblad en plaas die kopie aan die einde van Boek1 . Weereens, onthou asseblief om "Boek1.xlsx" met die naam van jou bestemmingswerkboek te vervang.

    Publieke Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Boek1.xlsx" ).Sheets(Workbooks( "Boek1.xlsx) " ).Werkblaaie.Tel) Einde Sub

    Nota. Vir die makro's om te werk, moet die teikenwerkboek op jou hardeskyf of netwerk gestoor word.

    Kopieer blad na 'n geselekteerde werkboek

    Om die huidige blad na enige oop werkboek te kan kopieer, jy kan 'n UserForm (genaamd UserForm1 ) skep met 'n ListBox kontrole ( named ListBox1 ) en twee knoppies:

    Volgende, dubbelklik op die vorm en plak die onderstaande kode in die Kode-venster:

    Publieke SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Every wbk In Application.Workbooks ListBox1.AddItem (wbk.Name) Volgende einde Sub Privaat Sub CommandButton1_Click() As ListBox1.ListIndex > -1 Then SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide End Sub

    Met die UserForm in plek, kan jy een van die volgende gebruik makro's om die te kopieeraktiewe vel na die werkboek van jou keuse.

    Kopieer vel na die begin van die geselekteerde werkboek :

    Publieke Sub CopySheetToBeginningAnotherWorkbook() Laai GebruikerForm1 GebruikerVorm1.Wys If (GebruikerVorm1.GeselekteerdeWerkboek " " ) Then activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End Sub

    Kopieer blad na die einde van die geselekteerde werkboek :

    Public Sub CopySheetToEndAnotherWorkbook() Laai UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "") Then activeSheet.Copy After:=Workbooks(_ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook)UserForm1.Selected_Workbook). End Sub

    Wanneer dit in Excel uitgevoer word, sal die makro vir jou 'n lys wys van alle werkboeke wat tans oopgemaak is. Jy kies die nodige een en klik OK:

    Excel-makro om blad te kopieer en hernoem

    Wanneer jy 'n blad in Excel kopieer, kry die replika 'n naam in die verstekformaat soos Blad1 (2) . Die volgende makro's kan jou die moeite spaar om die versteknaam handmatig te verander.

    Hierdie kode dupliseer die aktiewe werkblad, noem die kopie as "Toetsblad" (jy is vry om dit te vervang met enige ander naam waarvan jy hou) , en plaas die gekopieerde vel aan die einde van die huidige werkboek.

    Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Hervat Volgende activeSheet.Name ="Test Sheet" End Sub

    Om die gebruiker toe te laat om die naam vir die gekopieerde blad te spesifiseer, gebruik hierdie kode:

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Voer die naam vir die gekopieerde werkblad in" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    By loop, die makro vertoon die volgende invoerblokkie, waarin jy die gewenste naam tik en OK druk:

    Excel makro om blad te kopieer en hernoem op grond van selwaarde

    In sommige situasies kan dit geriefliker wees om 'n kopie met 'n spesifieke selwaarde te noem, byvoorbeeld 'n kolomopskrif. Hiervoor neem jy eenvoudig die bogenoemde kode en verskaf die waarde van die huidig ​​geselekteerde sel outomaties aan die invoerkassie. Soos met die vorige voorbeeld, sal die kopie aan die einde van die aktiewe werkboek geplaas word.

    Die moeilikste deel sal wees om jou gebruikers altyd die korrekte sel te laat kies voordat hulle hardloop die makro :)

    Publieke Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Voer die naam in vir die gekopieerde werkblad" , "Kopieer werkblad" , ActiveCell.Value) As nuweNaam "" Toe activeSheet. Copy After:=Worksheets(Sheets.Count) By Error Resume Next activeSheet.Name = newName End If End Sub

    Alternatiewelik kan jy die adres van hardkodeerdie sel waarmee die kopie benoem moet word, sel A1 in die onderstaande kode. Om die gekopieerde werkblad op grond van 'n ander sel te benoem, vervang A1 met 'n toepaslike selverwysing.

    Publieke Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) If wks.Range ( "A1" ).Waarde "" Toe op fout Hervat Volgende aktiewe Blad.Name = wks.Range( "A1" ).Waarde Einde As wks.Aktiveer End Sub

    Makro om werkblad na 'n geslote werkboek te kopieer

    Hierdie makro kopieer die aktiewe blad na die einde van 'n geslote werkboek. Die naam van 'n ander werkboek word nie in die kode gespesifiseer nie - die makro sal die standaard Windows Explorer-venster oopmaak en jou toelaat om enige bestemmingslêer te kies:

    Nadat jy die lêer gekies het en klik Open , die makro sal die aktiewe blad kopieer en die teikenwerkboek outomaties toemaak.

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Lêers (*.xlsx), *.xlsx" ) If fileName False Then Application.ScreenUpdating = Vals Stel currentSheet = Application.activeSheet Stel closedBook = Werkboeke. Maak (lêernaam) huidige Blad oop. Kopieer Na:=gesloteBoek.Blaaie(gesloteBoek.Werkblaaie.Tel) gesluitBoek. Close ( True ) Application.ScreenUpdating = True End If End Sub

    Excel VBA om blad van 'n ander werkboek te kopieer sonderopening

    Hierdie makro stel jou in staat om 'n werkblad vanaf 'n ander Excel-lêer te kopieer sonder om dit oop te maak. Die gekopieerde blad sal aan die einde van die huidige werkboek ingevoeg word.

    Onthou net om 'n paar vervangings in die kode te maak:

    • C:\Users\XXX\Documents\ Target_Book.xlsx moet verander word na die werklike pad en naam van die werkboek waaruit jy 'n blad wil kopieer.
    • Blad1 moet vervang word met die naam van die blad wat jy wil kopieer.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Stel sourceBook = Werkboeke. Maak ( "C:\Users\XXX\Documents\Target_Book.xlsx") sourceBook.Sheets( "Sheet1") oop. Kopieer After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook. Close Application.ScreenUpdating = True End Sub

    Excel VBA om blad verskeie kere te dupliseer

    Soms sal jy dalk dieselfde blad meer as een keer moet dupliseer, byvoorbeeld om verskillende formules op dieselfde datastel te toets. Dit kan maklik met die volgende makro gedoen word.

    Publieke Sub DuplicateSheetMultipleTimes() Dim n As Heelgetal By Fout Hervat Volgende n = InputBox( "Hoeveel kopieë van die aktiewe blad wil jy maak?" ) As n > = 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    Maak die oorspronklike blad oop, voer die makro uit, spesifiseer hoeveel kopieë van die aktiewe bladjy wil maak, en klik OK :

    Hoe om velle in Excel met VBA te dupliseer

    Om 'n blad in Excel te kopieer met een van die bogenoemde makro's, kan jy óf die VBA-kode in jou eie boek invoeg óf 'n makro uit ons voorbeeldwerkboek laat loop.

    Hoe om 'n makro by jou werkboek te voeg

    Om die in te voeg kode in jou werkboek, voer hierdie stappe uit:

    1. Maak die werkblad oop wat jy wil kopieer.
    2. Druk Alt + F11 om die Visual Basic Editor oop te maak.
    3. Aan die linker paneel, regskliek ThisWorkbook , en klik dan Voeg in > Module .
    4. Plak die kode in die Kode-venster.
    5. Druk F5 om die makro te laat loop.

    Vir die gedetailleerde stap-vir-stap instruksies, sien asseblief Hoe om VBA-kode in Excel in te voeg.

    Hoe om te hardloop 'n makro uit ons voorbeeldwerkboek

    Alternatiewelik kan jy ons voorbeeldwerkboek na Duplicate Excel Sheets aflaai en die kode daarvandaan laat loop.

    Die voorbeeldwerkboek bevat die volgende makros:

    CopySheetToNewWorkbook - kopieer die cu huur werkblad na 'n nuwe werkboek.

    CopySelectedSheets - kopieer veelvuldige velle wat jy kies na 'n nuwe werkboek.

    CopySheetToBeginningAnotherWorkbook - kopieer die aktiewe blad na die begin van 'n ander werkboek.

    CopySheetToEndAnotherWorkbook - kopieer die aktiewe blad na die einde van 'n ander Excel-lêer.

    CopySheetAndRename - dupliseer die huidige blad,hernoem dit soos deur die gebruiker gespesifiseer, en plaas die kopie na alle ander velle in die huidige werkboek.

    CopySheetAndRenamePredefined - dupliseer die aktiewe blad, gee 'n hardkodeerde naam aan die kopie en plaas dit aan die einde van die huidige werkboek.

    CopySheetAndRenameByCell - maak 'n kopie van die aktiewe blad en hernoem dit op grond van die geselekteerde selwaarde.

    CopySheetAndRenameByCell2 - kopieer die aktiewe blad en hernoem dit gebaseer op die hardgekodeerde seladres.

    CopySheetToClosedWorkbook - laat jou toe om blad na 'n geslote werkboek te kopieer.

    CopySheetFromClosedWorkbook - stel jou in staat om 'n blad vanaf 'n ander Excel-lêer te kopieer sonder om dit oop te maak.

    DuplicateSheetMultipleTimes - laat jou 'n vel in Excel verskeie kere dupliseer.

    Om voer die makro in jou Excel uit, doen net die volgende:

    1. Maak die afgelaaide werkboek oop en aktiveer die inhoud indien gevra.
    2. Maak jou eie werkboek oop en gaan na die blad wat jy wil hê kopie.
    3. <1 7>In jou werkblad, druk Alt + F8, kies die makro van belang, en klik Run .

    Dis hoe jy kan dupliseer 'n blad in Excel met VBA. Ek bedank jou vir die lees en hoop om jou volgende week op ons blog te sien!

    Michael Brown is 'n toegewyde tegnologie-entoesias met 'n passie om komplekse prosesse te vereenvoudig deur sagteware-instrumente te gebruik. Met meer as 'n dekade se ondervinding in die tegnologiebedryf, het hy sy vaardighede in Microsoft Excel en Outlook, sowel as Google Sheets en Docs, opgeskerp. Michael se blog is toegewy daaraan om sy kennis en kundigheid met ander te deel, en verskaf maklik-om-te volg wenke en tutoriale vir die verbetering van produktiwiteit en doeltreffendheid. Of jy nou 'n ervare professionele persoon of 'n beginner is, Michael se blog bied waardevolle insigte en praktiese raad om die meeste uit hierdie noodsaaklike sagteware-nutsmiddels te kry.