Kiel duobligi folion en Excel kun VBA

  • Kundividu Ĉi Tion
Michael Brown

La lernilo provizas kolekton de makrooj por duobligi foliojn en Excel: kopii kaj renomi laŭ ĉela valoro, kopii plurajn foliojn, kopii aktivan laborfolion al alia dosiero sen malfermi ĝin, kaj pli.

Mane kopii foliojn en Excel estas sufiĉe rapida kaj simpla... se farite nur unu aŭ dufoje. Duobligi plurajn foliojn plurfoje estas enuiga kaj tempopostula. Sur ĉi tiu paĝo, vi trovos manplenon da utilaj makrooj por aŭtomatigi ĉi tiun taskon.

    Excel VBA por kopii folion al nova laborlibro

    Ĉi tiu plej simpla unulinia makroo faras ĝuste tion, kion ĝia nomo sugestas - kopias la aktivan folion al nova laborlibro.

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    Kopiu plurajn foliojn en Excel kun VBA

    Se vi ŝatus kopiu plurajn foliojn de la aktiva laborlibro al nova, elektu ĉiujn interesajn laborfoliojn kaj rulu ĉi tiun makroon:

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

    Excel VBA por kopii folion al alia laborlibro

    Laŭ kie vi volas enmeti la kopiitan folion, uzu unu el la sekvaj makrooj.

    Kopiu folion al la komenco de alia laborlibro

    Ĉi tiu makroo kopias la aktivan folion antaŭe ĉiuj aliaj laborfolioj en la celdosiero, Libro1 en ĉi tiu ekzemplo. Por kopii al alia dosiero, anstataŭigu "Book1.xlsx" per la plena nomo de via cela laborlibro.

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

    Kopiu folion al la fino de alia laborlibro

    Tiu ĉi kodo duobligas la aktivan laborfolion kaj metas la kopion al la fino de Libro1 . Denove, bonvolu memori anstataŭigi "Libro1.xlsx" per la nomo de via cela laborlibro.

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

    Noto. Por ke la makrooj funkciu, la celata laborlibro devas esti konservita en via malmola disko aŭ reto.

    Kopiu folion al elektita laborlibro

    Por povi kopii la nunan folion al iu malfermita laborlibro, vi povas krei UzantFormon (nomitan UserForm1 ) kun ListBox kontrolo ( nomita ListBox1 ) kaj du butonoj:

    Sekva, duoble alklaku la formularon kaj algluu la suban kodon en la Koda fenestro:

    Publika ElektitaLaborlibro Kiel Ŝnuro Privata Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Each wbk In Application.Workbooks ListBox1.AddItem (wbk.Name) Sekva Fino Sub Private Sub CommandButton1_Click() If ListBox1.ListIndex > -1 Tiam SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Mi.Hide End Sub

    Kun la Uzantformularo en loko, vi povas uzi unu el la jenaj makrooj por kopii laaktiva folio al la laborlibro de via elekto.

    Kopiu folion al la komenco de la elektita laborlibro :

    Public Sub CopySheetToBeginningAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook " " ) Tiam activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End Sub

    Kopiu folion al la fino de la elektita laborlibro :

    Publika Sub CopySheetToEndAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks.SelectedWorkbooks.Selected1.SelectedWorkbook).SelectedForm1. End Sub

    Kiam ruliĝas en Excel, la makroo montros al vi liston de ĉiuj nuntempe malfermitaj laborlibroj. Vi elektas la bezonatan kaj alklaku OK:

    Excel-makro por kopii folion kaj renomi

    Kiam vi kopias folion en Excel, la kopio ricevas nomo en la defaŭlta formato kiel Sheet1 (2) . La sekvaj makrooj povas ŝpari al vi la problemon ŝanĝi la defaŭltan nomon permane.

    Ĉi tiu kodo duobligas la aktivan laborfolion, nomas la kopion kiel "Testfolio" (vi rajtas anstataŭigi ĝin per iu ajn alia nomo, kiun vi ŝatas) , kaj metas la kopiitan folion ĉe la fino de la nuna laborlibro.

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

    Por permesi al la uzanto specifi la nomon por la kopiita folio , uzu ĉi tiun kodon:

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Enigu la nomon por la kopiita laborfolio" ) If newName "" Tiam activeSheet.Copy After:=Worksheets(Sheets.Count) Je Eraro Resume Sekva activeSheet.Name = newName End If End Sub

    Al la funkciado, la makroo montras la sekvan enigkeston, en kiu vi tajpas la deziratan nomon kaj premu OK:

    Excel-makro por kopii folion kaj renomi laŭ ĉela valoro

    En iuj situacioj, povas esti pli oportune nomi kopion kun specifa ĉela valoro, ekzemple kolumna kaplinio. Por tio, vi simple prenu la supran kodon kaj liveras la valoron de la nuntempe elektita ĉelo al la eniga skatolo aŭtomate. Kiel ĉe la antaŭa ekzemplo, la kopio estos metita ĉe la fino de la aktiva laborlibro.

    La plej malfacila parto estus, ke viaj uzantoj ĉiam elektu la ĝustan ĉelon antaŭ ol ruliĝi. la makroo :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Enigu la nomon por la kopiita laborfolio" , "Kopiu laborfolion" , ActiveCell.Value) Se novaName "" Tiam aktivaSheet. Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Alternative, vi povas malfaciligi la adreson dela ĉelo per kiu la kopio devus esti nomita, ĉelo A1 en la suba kodo. Por nomi la kopiitan laborfolion surbaze de alia ĉelo, anstataŭigu A1 per taŭga ĉela referenco.

    Public Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) If wks.Range ( "A1" ).Valo "" Tiam En Eraro Resume Sekva activeSheet.Name = wks.Range( "A1" ).Valo End If wks.Aktivigi End Sub

    Makroo por kopii laborfolion al fermita laborlibro

    Ĉi tiu makroo kopias la aktivan folion al la fino de fermita laborlibro. La nomo de alia laborlibro ne estas specifita en la kodo - la makroo malfermos la norman fenestron de Windows Explorer kaj ebligos al vi elekti ajnan celdosieron:

    Post vi elektos la dosieron kaj alklaku Malfermu , la makroo kopios la aktivan folion kaj fermos la celitan laborlibron aŭtomate.

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Dosieroj (*.xlsx), *.xlsx" ) If fileName False Then Application.ScreenUpdating = Falsa Aro currentSheet = Application.activeSheet Set closedBook = Laborlibroj. Malfermu (dosiernomo) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count) closedBook. Fermu ( Vera ) Application.ScreenUpdating = Vera Fino Se Fino Sub

    Excel VBA por kopii folion de alia laborlibro senmalfermante

    Ĉi tiu makroo ebligas al vi kopii laborfolion el alia Excel-dosiero sen malfermi ĝin. La kopiita folio estos enmetita ĉe la fino de la nuna laborlibro.

    Nur memoru fari kelkajn anstataŭaĵojn en la kodo:

    • C:\Users\XXX\Documents\ Target_Book.xlsx devus esti ŝanĝita al la efektiva vojo kaj nomo de la laborlibro de kiu vi volas kopii folion.
    • Sheet1 devus esti anstataŭigita per la nomo de la folio kiun vi volas kopii.
    Publika Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Agordu sourceBook = Laborlibroj. Malfermu ( "C:\Uzantoj\XXX\Documents\Target_Book.xlsx") sourceBook.Sheets( "Sheet1" ).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) fontlibro. Fermu Application.ScreenUpdating = True End Sub

    Excel VBA por duobligi folion plurfoje

    Foje, vi eble bezonos duobligi la saman folion pli ol unufoje, ekzemple por testi malsamajn formulojn sur la sama datuma aro. Ĉi tio povas esti facile farita per la sekva makroo.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Kiom da kopioj de la aktiva folio vi volas fari?" ) Se n > = 1 Tiam For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    Malfermu la originalan folion, rulu la makroon, specifu kiom da kopioj de la aktiva foliovi volas fari, kaj alklaku OK :

    Kiel duobligi foliojn en Excel per VBA

    Por kopii folion en Excel kun unu el ĉi-supraj makrooj, vi povas aŭ enmeti la VBA-kodon en vian propran libron aŭ ruli makroon el nia ekzempla laborlibro.

    Kiel aldoni makroon al via laborlibro

    Por enmeti la kodon en via laborlibro, faru ĉi tiujn paŝojn:

    1. Malfermu la laborfolion, kiun vi volas kopii.
    2. Premu Alt + F11 por malfermi la Visual Basic Editor.
    3. Ok la maldekstra panelo, dekstre alklaku Tiu Laborlibro , kaj poste alklaku Enmeti > Modulo .
    4. Algluu la kodon en la Kodo-fenestro.
    5. Premu F5 por ruli la makroon.

    Por la detalaj instrukcioj paŝo post paŝo, bonvolu vidi Kiel enigi VBA-kodon en Excel.

    Kiel ruliĝi. makroo el nia ekzempla laborlibro

    Alternative, vi povas elŝuti nian ekzemplan laborlibron al Duobligi Excel-foliojn kaj ruli la kodon de tie.

    La ekzempla laborlibro enhavas la jenajn makroojn:

    CopySheetToNewWorkbook - kopias la ku luu laborfolion al nova laborlibro.

    CopySelectedSheets - kopias plurajn foliojn kiujn vi elektas al nova laborlibro.

    CopySheetToBeginningAnotherWorkbook - kopias la aktivan folion al la komenco de alia laborlibro.

    CopySheetToEndAnotherWorkbook - kopias la aktivan folion al la fino de alia Excel-dosiero.

    CopySheetAndRename - duobligas la nunan folio,renomas ĝin kiel specifite de la uzanto, kaj metas la kopion post ĉiuj aliaj folioj en la nunan laborlibron.

    CopySheetAndRenamePredefined - duobligas la aktivan folion, donas malmolan nomon al la kopio kaj metas ĝin ĉe la fino de la nuna laborlibro.

    CopySheetAndRenameByCell - faras kopion de la aktiva folio kaj renomas ĝin laŭ la elektita ĉela valoro.

    CopySheetAndRenameByCell2 - kopias la aktivan folion kaj renomas ĝin surbaze de la fikskodita ĉela adreso.

    CopySheetToClosedWorkbook - permesas kopii folion al fermita laborlibro.

    CopySheetFromClosedWorkbook - ebligas al vi kopii folion el alia Excel-dosiero sen malfermi ĝin.

    DuplicateSheetMultipleTimes - ebligas vin duobligi folion en Excel plurfoje.

    Al rulu la makroon en via Excel, simple faru la jenon:

    1. Malfermu la elŝutitan laborlibron kaj ebligu la enhavon se oni petas.
    2. Malfermu vian propran laborlibron kaj navigu al la folio, kiun vi volas. kopio.
    3. <1 7>En via laborfolio, premu Alt + F8 , elektu la interesan makroon, kaj alklaku Run .

    Tiel vi povas duobligi folio en Excel kun VBA. Mi dankas vin pro legado kaj esperas vidi vin en nia blogo venontsemajne!

    Michael Brown estas diligenta teknologia entuziasmulo kun pasio por simpligi kompleksajn procezojn uzante programarajn ilojn. Kun pli ol jardeko da sperto en la teknologia industrio, li perfektigis siajn kapablojn en Microsoft Excel kaj Outlook, same kiel Google Sheets kaj Docs. La blogo de Mikaelo estas dediĉita al kunhavigi siajn sciojn kaj kompetentecon kun aliaj, provizante facilajn sekvajn konsiletojn kaj lernilojn por plibonigi produktivecon kaj efikecon. Ĉu vi estas sperta profesiulo aŭ komencanto, la blogo de Mikaelo ofertas valorajn komprenojn kaj praktikajn konsilojn por eltiri la plej multajn el ĉi tiuj esencaj programaj iloj.