Kuidas dubleerida lehte Excelis VBAga

  • Jaga Seda
Michael Brown

Õpik pakub kogumikku makroid Exceli lehtede dubleerimiseks: kopeerimine ja ümbernimetamine lahtri väärtuse alusel, mitme lehe kopeerimine, aktiivse töölehe kopeerimine teise faili ilma seda avamata ja palju muud.

Excelis lehtede käsitsi kopeerimine on üsna kiire ja lihtne... kui seda tehakse vaid üks või kaks korda. Mitme lehe mitmekordne dubleerimine on igav ja aeganõudev. Sellel leheküljel leiate käputäie kasulikke makrosid selle ülesande automatiseerimiseks.

    Excel VBA lehe kopeerimiseks uude töövihikusse

    See lihtsaim ühe reaga makro teeb täpselt seda, mida selle nimi ütleb - kopeerib aktiivse lehe uude töövihikusse.

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    Mitme lehe kopeerimine Excelis VBAga

    Kui soovite kopeerida mitu lehte aktiivsest töövihikust uude töövihikusse, valige kõik huvipakkuvad töölehed ja käivitage see makro:

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

    Excel VBA lehe kopeerimiseks teise töövihikusse

    Sõltuvalt sellest, kuhu soovite kopeeritud lehe sisestada, kasutage ühte järgmistest makrotest.

    Lehe kopeerimine teise töövihiku algusesse

    See makro kopeerib aktiivse lehe enne kõiki teisi töölehti sihtfailis, Raamat1 Käesolevas näites. Teisse faili kopeerimiseks asendage "Book1.xlsx" oma sihttööraamatu täisnimega.

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

    Lehe kopeerimine teise töövihiku lõppu

    See kooditükk dubleerib aktiivse töölehe ja paigutab koopia lõppu Raamat1 Ärge unustage jällegi asendada "Book1.xlsx" oma sihttöövihiku nimega.

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

    Märkus. Makrode toimimiseks peab sihttöövihik olema salvestatud teie kõvakettale või võrku.

    Lehe kopeerimine valitud töövihikusse

    Selleks, et praegust lehte saaksite kopeerida mis tahes avatud töövihikusse, saate luua UserFormi (nimega UserForm1 ) koos ListBox kontroll ( nimega ListBox1 ) ja kaks nuppu:

    Seejärel tehke topeltklõps vormil ja kleepige alljärgnev kood koodiaknasse:

    Public SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Each wbk In Application.Workbooks ListBox1.AddItem (wbk.Name) Next End Sub Private Sub CommandButton1_Click() If ListBox1.ListIndex> -1 Then SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide EndSub

    Kui UserForm on paigas, saate kasutada ühte järgmistest makrotest, et kopeerida aktiivne leht valitud töövihikusse.

    Kopeeri leht valitud töövihiku algus :

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

    Kopeeri leht valitud töövihiku lõpp :

    Public Sub CopySheetToEndAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook). _ Worksheets.Count) End If Unload UserForm1 End Sub

    Kui makro käivitatakse Excelis, kuvatakse teile nimekiri kõikidest hetkel avatud töövihikutest. Valige vajalik ja klõpsake OK:

    Exceli makro lehe kopeerimiseks ja ümbernimetamiseks

    Kui te kopeerite Exceli lehe, antakse koopiale vaikimisi nimi, näiteks järgmiselt. Leht1 (2) Järgnevad makrotoimingud võivad teid säästa vaikimisi nime käsitsi muutmisest.

    See kood dubleerib aktiivse töölehe, nimetab koopia "Testleht" (võite selle asendada mis tahes muu nimega) ja paigutab kopeeritud lehe praeguse töövihiku lõppu.

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

    Võimaldada kasutajale määrata kopeeritava lehe nimi , kasutage seda koodi:

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Enter the name for the copied worksheet" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Makro käivitamisel kuvatakse järgmine sisestusaken, kuhu tuleb sisestada soovitud nimi ja vajutada OK:

    Exceli makro lehe kopeerimiseks ja ümbernimetamiseks lahtri väärtuse alusel

    Mõnes olukorras võib olla mugavam nimetada koopia konkreetse lahtri väärtusega, näiteks veeru päise. Selleks võtate lihtsalt ülaltoodud koodi ja annate väärtuse hetkel valitud lahter automaatselt sisestuskasti. Nagu eelmise näite puhul, paigutatakse koopia aktiivse töövihiku lõppu.

    Kõige keerulisem oleks, et kasutajad valiksid alati õige lahtri enne makro käivitamist :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Enter the name for the copied worksheet" , "Copy worksheet" , ActiveCell.Value) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub End Sub

    Teise võimalusena võite raku aadressi kõvakoodimine mille järgi tuleks koopia nimetada, allpool esitatud koodis lahter A1. Kui soovite kopeeritava töölehe nimetada mõne teise lahtri põhjal, asendage A1 sobiva lahtriviitega.

    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

    Makro töölehe kopeerimiseks suletud töövihikusse

    See makro kopeerib aktiivse lehe suletud töövihiku lõppu. Teise töövihiku nime koodis ei määrata - makro avab tavalise Windows Explorer akna ja võimaldab valida suvalise sihtfaili:

    Pärast faili valimist ja klõpsamist Avatud kopeerib makro aktiivse lehe ja sulgeb sihttöövihiku automaatselt.

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Files (*.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

    Exceli VBA lehe kopeerimiseks teisest töövihikust ilma avamata

    See makro võimaldab kopeerida töölehe teisest Exceli failist ilma seda avamata. Kopeeritud leht lisatakse praeguse töövihiku lõppu.

    Lihtsalt ärge unustage, et teeksite koodis paar asendust:

    • C:\Users\XXX\Documents\Target_Book.xlsx tuleks muuta selle töövihiku tegeliku tee ja nimega, millest soovite lehte kopeerida.
    • Sheet1 tuleks asendada selle lehe nimega, mida soovite kopeerida.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Set sourceBook = Workbooks. Open ( "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 lehe mitmekordse dubleerimiseks mitu korda

    Mõnikord võib teil olla vaja sama lehte rohkem kui üks kord dubleerida, näiteks selleks, et testida erinevaid valemeid sama andmekogumi peal. Seda saab hõlpsasti teha järgmise makroga.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Mitu koopiat aktiivsest lehest soovite teha?" ) If n>= 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    Avage originaalleht, käivitage makro, määrake, mitu koopiat aktiivsest lehest soovite teha, ja klõpsake nuppu OK :

    Kuidas dubleerida lehed Excelis VBAga

    Et kopeerida Exceli leht ühe ülaltoodud makroga, võite kas sisestada VBA-koodi oma raamatusse või käivitada makro meie näidistööraamatust.

    Kuidas lisada makro oma töövihikusse

    Koodi sisestamiseks oma töövihikusse tehke järgmised toimingud:

    1. Avage tööleht, mida soovite kopeerida.
    2. Vajutage Alt + F11, et avada Visual Basic'i redaktor.
    3. Klõpsake vasakul paanil paremklõpsuga ThisWorkbook ja seejärel klõpsake Sisesta > Moodul .
    4. Sisestage kood koodide aknasse.
    5. Makro käivitamiseks vajutage F5.

    Üksikasjalikud samm-sammulised juhised leiate jaotisest Kuidas sisestada VBA-koodi Excelis.

    Kuidas käivitada makro meie näidistööraamatust

    Teise võimalusena saate alla laadida meie näidistööraamatu Exceli lehtede dubleerimiseks ja käivitada koodi sealt.

    Näidistööraamat sisaldab järgmisi makrosid:

    CopySheetToNewWorkbook - kopeerib praeguse töölehe uude töövihikusse.

    CopySelectedSheets - kopeerib mitu valitud lehte uude töövihikusse.

    CopySheetToBeginningAnotherWorkbook - kopeerib aktiivse lehe teise töövihiku algusesse.

    CopySheetToEndAnotherWorkbook - kopeerib aktiivse lehe teise Exceli faili lõppu.

    CopySheetAndRename - dubleerib praeguse lehe, nimetab selle ümber kasutaja poolt määratud viisil ja paigutab koopia kõigi teiste lehtede järele praeguses töövihikus.

    CopySheetAndRenamePredefined - dubleerib aktiivse lehe, annab koopiale kõvakooditud nime ja paigutab selle praeguse töövihiku lõppu.

    CopySheetAndRenameByCell - teeb aktiivsest lehest koopia ja nimetab selle ümber vastavalt valitud lahtri väärtusele.

    CopySheetAndRenameByCell2 - kopeerib aktiivse lehe ja nimetab selle ümber, lähtudes kõvakooditud lahtri aadressist.

    CopySheetToClosedWorkbook - võimaldab kopeerida lehe suletud töövihikusse.

    CopySheetFromClosedWorkbook - võimaldab teil kopeerida lehe teisest Exceli failist ilma seda avamata.

    DuplicateSheetMultipleTimes - võimaldab teil Excelis lehte mitu korda dubleerida.

    Makro käivitamiseks Excelis tehke lihtsalt järgmist:

    1. Avage allalaaditud töövihik ja lubage sisu, kui seda nõutakse.
    2. Avage oma töövihik ja navigeerige lehele, mida soovite kopeerida.
    3. Vajutage oma töölehel Alt + F8 , valige huvipakkuv makro ja klõpsake nuppu Käivita .

    Nii saab VBA abil Excelis lehte dubleerida. Tänan teid lugemise eest ja loodan, et näeme teid järgmisel nädalal meie blogis!

    Michael Brown on pühendunud tehnoloogia entusiast, kelle kirg on tarkvaratööriistade abil keerukate protsesside lihtsustamine. Rohkem kui kümneaastase kogemusega tehnoloogiatööstuses on ta lihvinud oma oskusi Microsoft Excelis ja Outlookis, samuti Google Sheetsis ja Docsis. Michaeli ajaveebi eesmärk on jagada oma teadmisi ja teadmisi teistega, pakkudes hõlpsasti järgitavaid näpunäiteid ja õpetusi tootlikkuse ja tõhususe parandamiseks. Olenemata sellest, kas olete kogenud professionaal või algaja, pakub Michaeli ajaveebi väärtuslikke teadmisi ja praktilisi nõuandeid nende oluliste tarkvaratööriistade maksimaalseks kasutamiseks.