Sisukord
Õ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 SubMitme 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 SubExcel 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 SubLehe 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 SubMä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 EndSubKui 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 SubKopeeri 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 SubKui 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 SubVõ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 SubMakro 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 SubTeise 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 SubMakro 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 SubExceli 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.
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 SubAvage 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:
- Avage tööleht, mida soovite kopeerida.
- Vajutage Alt + F11, et avada Visual Basic'i redaktor.
- Klõpsake vasakul paanil paremklõpsuga ThisWorkbook ja seejärel klõpsake Sisesta > Moodul .
- Sisestage kood koodide aknasse.
- 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:
- Avage allalaaditud töövihik ja lubage sisu, kui seda nõutakse.
- Avage oma töövihik ja navigeerige lehele, mida soovite kopeerida.
- 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!