Miten Excel-arkki voidaan kopioida VBA:lla VBA:n avulla

  • Jaa Tämä
Michael Brown

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 Sub

    Kopioi 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 Sub

    Excel 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 Sub

    Kopioi 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 Sub

    Huomautus: 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 EndSub

    Kun 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 Sub

    Kopioi 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 Sub

    Kun 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 Sub

    Jotta 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 Sub

    Kun 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 Sub

    Vaihtoehtoisesti 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 Sub

    Makro 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 Sub

    Excel 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.
    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 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 Sub

    Avaa 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:

    1. Avaa työarkki, jonka haluat kopioida.
    2. Avaa Visual Basic -editori painamalla Alt + F11.
    3. Napsauta vasemmassa ruudussa hiiren kakkospainikkeella ThisWorkbook ja napsauta sitten Lisää > Moduuli .
    4. Liitä koodi Koodiikkunaan.
    5. 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:

    1. Avaa ladattu työkirja ja ota sisältö käyttöön, jos sinua kehotetaan.
    2. Avaa oma työkirjasi ja siirry arkille, jonka haluat kopioida.
    3. 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!

    Michael Brown on omistautunut teknologian harrastaja, jolla on intohimo yksinkertaistaa monimutkaisia ​​prosesseja ohjelmistotyökalujen avulla. Yli vuosikymmenen kokemuksella teknologia-alalta hän on hionut taitojaan Microsoft Excelissä ja Outlookissa sekä Google Sheetsissä ja Docsissa. Michaelin blogi on omistettu jakamaan tietojaan ja asiantuntemustaan ​​muiden kanssa, ja se tarjoaa helposti seurattavia vinkkejä ja opetusohjelmia tuottavuuden ja tehokkuuden parantamiseksi. Olitpa kokenut ammattilainen tai aloittelija, Michaelin blogi tarjoaa arvokkaita oivalluksia ja käytännön neuvoja, joiden avulla saat kaiken irti näistä tärkeistä ohjelmistotyökaluista.