Sisällysluettelo
Ohje tarjoaa kokoelman makroja Excel-arkkien kopioimiseen: kopioi ja nimeä uudelleen solun arvon perusteella, kopioi useita arkkia, kopioi aktiivinen työarkki toiseen tiedostoon avaamatta sitä ja paljon muuta.
Arkkien manuaalinen kopiointi Excelissä on melko nopeaa ja suoraviivaista... jos se tehdään vain kerran tai kahdesti. Useiden arkkien monistaminen useita kertoja on tylsää ja aikaa vievää. Tältä sivulta löydät kourallisen hyödyllisiä makroja tämän tehtävän automatisoimiseksi.
Excel VBA kopioida arkki uuteen työkirjaan
Tämä yksinkertaisin yksirivinen makro tekee juuri sen, mitä sen nimi kertoo - kopioi aktiivisen arkin uuteen työkirjaan.
Public Sub CopySheetToNewWorkbook() activeSheet.Copy End SubKopioi useita Excel-arkkeja VBA:lla
Jos haluat kopioida useita arkkeja aktiivisesta työkirjasta uuteen työkirjaan, valitse kaikki haluamasi työarkit ja suorita tämä makro:
Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End SubExcel VBA kopioida arkki toiseen työkirjaan
Riippuen siitä, mihin haluat lisätä kopioidun arkin, käytä jotakin seuraavista makroista.
Kopioi arkki toisen työkirjan alkuun
Tämä makro kopioi aktiivisen arkin ennen kaikkia muita kohdetiedoston työarkkeja, Kirja1 Jos haluat kopioida toiseen tiedostoon, korvaa "Book1.xlsx" kohdetyökirjan täydellä nimellä.
Public Sub CopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks( "Book1.xlsx" ).Sheets(1) End SubKopioi arkki toisen työkirjan loppuun
Tämä koodinpätkä kopioi aktiivisen laskentataulukon ja sijoittaa kopion lopussa olevaan Kirja1 Muista jälleen korvata "Book1.xlsx" kohdetyökirjan nimellä.
Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx" ).Worksheets.Count) End SubHuomautus: Jotta makrot toimisivat, kohdekirjan on oltava tallennettuna kiintolevylle tai verkkoon.
Kopioi arkki valittuun työkirjaan
Jotta voit kopioida nykyisen arkin mihin tahansa avoimeen työkirjaan, voit luoda UserForm-lomakkeen (nimeltä English). UserForm1 ), jossa on ListBox ohjaus ( nimeltään ListBox1 ) ja kaksi painiketta:
Seuraavaksi kaksoisnapsauta lomaketta ja liitä alla oleva koodi Koodiikkunaan:
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 EndSubKun UserForm on käytössä, voit kopioida aktiivisen arkin haluamaasi työkirjaan jollakin seuraavista makroista.
Kopioi arkki valitun työkirjan alku :
Public Sub CopySheetToBeginningAnotherWorkbook() Lataa UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End SubKopioi arkki valitun työkirjan loppu :
Public Sub CopySheetToEndAnotherWorkbook() Lataa UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook). _ Worksheets.Count) End If Unload UserForm1 End SubKun makro suoritetaan Excelissä, saat luettelon kaikista tällä hetkellä avoinna olevista työkirjoista. Valitse tarvittava ja napsauta OK:
Excel-makro kopioida arkki ja nimetä uudelleen
Kun kopioit arkiston Excelissä, kopiolle annetaan nimi oletusmuodossa, kuten esim. Sheet1 (2) Seuraavien makrojen avulla voit säästää sinut oletusnimen vaihtamiselta manuaalisesti.
Tämä koodi kopioi aktiivisen laskentataulukon, nimeää kopion nimellä "Test Sheet" (voit korvata sen millä tahansa muulla haluamallasi nimellä) ja sijoittaa kopioidun taulukon nykyisen työkirjan loppuun.
Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = "Test Sheet" End SubJotta käyttäjä voi määrittää kopioidun arkin nimen , käytä tätä koodia:
Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Enter the name for the copyed worksheet" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End SubKun makro käynnistetään, näyttöön tulee seuraava syöttöruutu, johon kirjoitetaan haluttu nimi ja painetaan OK:
Excel-makro kopioida arkki ja nimetä uudelleen solun arvon perusteella
Joissakin tilanteissa voi olla kätevämpää nimetä kopio tietyllä solun arvolla, esimerkiksi sarakkeen otsikon arvolla. Tässä tapauksessa otat yllä olevan koodin ja annat arvoksi arvon tällä hetkellä valittu solu Kuten edellisessä esimerkissä, kopio sijoitetaan aktiivisen työkirjan loppuun.
Hankalinta olisi saada käyttäjät valitsemaan aina oikea solu ennen makron suorittamista :)
Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Enter the name for the copyed 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 SubVaihtoehtoisesti voit kovakoodaa solun osoite jonka mukaan kopio nimetään, alla olevassa koodissa solu A1. Jos haluat nimetä kopioidun laskentataulukon toisen solun perusteella, korvaa A1 sopivalla soluviitteellä.
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 kopioida laskentataulukko suljettuun työkirjaan
Tämä makro kopioi aktiivisen arkin suljetun työkirjan loppuun. Toisen työkirjan nimeä ei määritetä koodissa - makro avaa tavallisen Windows Explorer -ikkunan, josta voit valita minkä tahansa kohdetiedoston:
Kun olet valinnut tiedoston ja napsauttanut Avaa , makro kopioi aktiivisen arkin ja sulkee kohdetyökirjan automaattisesti.
Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel-tiedostot (*.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 SubExcel VBA kopioida arkki toisesta työkirjasta avaamatta sitä
Tämän makron avulla voit kopioida työarkin toisesta Excel-tiedostosta avaamatta sitä. Kopioitu arkki lisätään nykyisen työkirjan loppuun.
Muista vain korvata koodissa pari kohtaa:
- C:\Users\XXX\Documents\Target_Book.xlsx on muutettava sen työkirjan todelliseksi poluksi ja nimeksi, josta haluat kopioida arkin.
- Sheet1 on korvattava sen arkin nimellä, jonka haluat kopioida.
Excel VBA kopioida arkin useita kertoja
Joskus saatat joutua monistamaan saman arkin useammin kuin kerran, esimerkiksi testataksesi eri kaavoja samalla tietosarjalla. Tämä onnistuu helposti seuraavalla makrolla.
Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Kuinka monta kopiota aktiivisesta arkista haluat tehdä?" ) If n>= 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End SubAvaa alkuperäinen arkki, suorita makro, määritä kuinka monta kopiota aktiivisesta arkista haluat tehdä ja napsauta sitten OK :
Miten Excel-arkkeja voidaan kopioida VBA:n avulla?
Jos haluat kopioida Excel-arkin jollakin edellä mainituista makroista, voit joko lisätä VBA-koodin omaan kirjaasi tai suorittaa makron esimerkkityökirjastamme.
Makron lisääminen työkirjaan
Voit lisätä koodin työkirjaan seuraavasti:
- Avaa työarkki, jonka haluat kopioida.
- Avaa Visual Basic -editori painamalla Alt + F11.
- Napsauta vasemmassa ruudussa hiiren kakkospainikkeella ThisWorkbook ja napsauta sitten Lisää > Moduuli .
- Liitä koodi Koodiikkunaan.
- Suorita makro painamalla F5.
Yksityiskohtaiset vaiheittaiset ohjeet ovat kohdassa VBA-koodin lisääminen Exceliin.
Makron suorittaminen esimerkkityökirjastamme
Vaihtoehtoisesti voit ladata esimerkkityökirjamme Excel-taulukoiden kopiointiin ja suorittaa koodin sieltä.
Esimerkkityökirja sisältää seuraavat makrot:
CopySheetToNewWorkbook - kopioi nykyisen työarkin uuteen työkirjaan.
CopySelectedSheets - kopioi useita valitsemiasi arkkeja uuteen työkirjaan.
CopySheetToBeginningAnotherWorkbook - kopioi aktiivisen arkin toisen työkirjan alkuun.
CopySheetToEndAnotherWorkbook - kopioi aktiivisen arkin toisen Excel-tiedoston loppuun.
CopySheetAndRename - kopioi nykyisen arkin, nimeää sen uudelleen käyttäjän määrittelemällä tavalla ja asettaa kopion nykyisen työkirjan kaikkien muiden arkkien jälkeen.
CopySheetAndRenamePredefined - kopioi aktiivisen arkin, antaa kopiolle kovakoodatun nimen ja sijoittaa sen nykyisen työkirjan loppuun.
CopySheetAndRenameByCell - luo kopion aktiivisesta arkista ja nimeää sen uudelleen valitun solun arvon perusteella.
CopySheetAndRenameByCell2 (kopioi arkki ja nimeä solu2) - kopioi aktiivisen arkin ja nimeää sen uudelleen kovakoodatun soluosoitteen perusteella.
CopySheetToClosedWorkbook - voit kopioida arkin suljettuun työkirjaan.
CopySheetFromClosedWorkbook - voit kopioida arkin toisesta Excel-tiedostosta avaamatta sitä.
DuplicateSheetMultipleTimes - avulla voit monistaa Excel-arkin useita kertoja.
Voit suorittaa makron Excelissä seuraavasti:
- Avaa ladattu työkirja ja ota sisältö käyttöön, jos sinua kehotetaan.
- Avaa oma työkirjasi ja siirry arkille, jonka haluat kopioida.
- Paina laskentataulukossa Alt + F8 , valitse haluamasi makro ja napsauta sitten Suorita .
Näin voit kopioida Excel-arkin VBA:lla. Kiitos lukemisesta ja toivottavasti tapaamme blogissamme ensi viikolla!