VBA -kopioarkki / Kopioi taulukko toiseen työkirjaan

Tämä opetusohjelma kattaa taulukon tai laskentataulukon kopioinnin VBA: n avulla.

Kopioi laskentataulukko uuteen työkirjaan

Laskentataulukon kopioiminen uuteen työkirjaan:

1 Sheets ("Sheet1"). Kopio

Kopioi ActiveSheet uuteen työkirjaan

ActiveSheetin kopioiminen uuteen työkirjaan:

1 ActiveSheet.Copy

Kopioi useita arkkeja uuteen työkirjaan

Useiden arkkien kopioiminen uuteen työkirjaan:

1 ActiveWindow.SelectedSheets.Copy

Kopioi taulukko samaan työkirjaan

Aloitimme näyttämällä sinulle yksinkertaisimman Sheets -kopiointiesimerkin: Sheetsin kopioiminen uuteen työkirjaan. Nämä alla olevat esimerkit osoittavat, kuinka kopioit taulukon samaan työkirjaan. Kun kopioit taulukon työkirjaan, sinun on määritettävä sijainti. Jos haluat määrittää sijainnin, kehotat VBA: ta siirtämään laskentataulukon ennen tai jälkeen toisen laskentataulukon.

Kopioi arkki ennen toista arkkia

Tässä määritetään taulukon kopioiminen ja liittäminen ennen Sheet2: ta

1 Sheets ("Sheet1"). Kopioi ennen: = Sheets ("Sheet2")

Kopioi taulukko ennen ensimmäistä arkkia

Arkin nimen määrittämisen sijaan voit myös määrittää arkin sijainnin. Tässä kopioimme ja liitämme taulukon ennen työkirjan ensimmäistä taulukkoa.

1 Sheets ("Sheet1"). Kopioi ennen: = Sheets (1)

Äskettäin luotu taulukko on nyt työkirjan ensimmäinen arkki.

Kopioi taulukko viimeisen arkin jälkeen

Käytä After -ominaisuutta kertoaksesi VBA: lle liittää arkin toisen arkin jälkeen. Kopioimme ja liitämme taulukon työkirjan viimeisen taulukon jälkeen:

1 Sheets ("Sheet1"). Kopioi jälkeen: = Sheets (Sheets.Count)

Huomaa, että käytimme Sheets.Countia laskemaanksesi työkirjan Sheets -määrän.

Siirrä arkki

Voit myös siirtää taulukon työkirjassa samankaltaisen syntaksin avulla. Tämä koodi siirtää taulukon 1 työkirjan loppuun:

1 Sheets ("Sheet1"). Siirrä jälkeen: = Sheets (Sheets.Count)

Kopioi ja nimilomake

Arkin kopioimisen ja liittämisen jälkeen uudesta luodusta taulukosta tulee ActiveSheet. Jos haluat nimetä uuden arkin uudelleen, käytä vain ActiveSheet -nimeä.

123456 Sub CopySheetRename1 ()Sheets ("Sheet1"). Kopioi jälkeen: = Sheets (Sheets.Count)ActiveSheet.Name = "LastSheet"End Sub

Jos taulukon nimi on jo olemassa, yllä oleva koodi tuottaa virheen. Sen sijaan voimme käyttää ”On Error Resume Next” -toimintoa kertoaksemme VBA: lle, että se sivuuttaa Sheetin nimeämisen ja jatkaa loput menettelystä:

12345678 Sub CopySheetRename2 ()Sheets ("Sheet1"). Kopioi jälkeen: = Sheets (Sheets.Count)Virhe Jatka seuraavaksiActiveSheet.Name = "LastSheet"Virhe GoTo 0End Sub

Tai käytä RangeExists -toimintoa testataksesi, onko Sheet -nimi jo olemassa, ennen kuin yrität kopioida taulukon:

123456789101112131415161718 Sub CopySheetRename3 ()Jos RangeExists ("LastSheet") SittenMsgBox "Arkki on jo olemassa."MuuSheets ("Sheet1"). Kopioi jälkeen: = Sheets (Sheets.Count)ActiveSheet.Name = "LastSheet"Loppu JosEnd SubToimintoalueExists (WhatSheet as String, Optional ByVal WhatRange As String = "A1") BooleanDim -testi alueenaVirhe Jatka seuraavaksiAseta testi = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Virheen numero = 0Virhe GoTo 0Lopeta toiminto

Kopioi ja nimilomake solun arvon perusteella

Voit myös haluta kopioida ja nimetä taulukon solun arvon perusteella. Tämä koodi nimeää laskentataulukon solun arvon perusteella A1: ssä

12345678 Sub CopySheetRenameFromCell ()Sheets ("Sheet1"). Kopioi jälkeen: = Sheets (Sheets.Count)Virhe Jatka seuraavaksiActiveSheet.Name = Alue ("A1"). ArvoVirhe GoTo 0End Sub

Kopioi laskentataulukko toiseen työkirjaan

Toistaiseksi olemme työskennelleet Sheetsin kopioimisen työkirjan sisällä. Nyt kerromme esimerkkejä Sheetsin kopioimisesta ja liittämisestä muihin työkirjoihin. Tämä koodi kopioi taulukon toisen työkirjan alkuun:

1 Sheets ("Sheet1"). Copy Before: = Työkirjat ("Example.xlsm"). Sheets (1)

Tämä kopioi laskentataulukon toisen työkirjan loppuun.

1 Sheets ("Sheet1"). Copy After: = Työkirjat ("Example.xlsm"). Sheets (Työkirjat ("Example.xlsm"). Sheets.Count)

Huomaa, että vaihdoimme 1 kanssa Työkirjat ("Esimerkki.xlsm"). Arkit.Luku saadaksesi viimeisen laskentataulukon.

Kopioi laskentataulukko suljettuun työkirjaan

Voit myös haluta kopioida laskentataulukon suljettuun työkirjaan. Tämä koodi avaa suljetun työkirjan, jotta voit kopioida taulukon siihen.

123456789 Sub CopySheetToClosedWB ()Application.ScreenUpdating = VääräAseta closedBook = Työkirjat.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")Sheets ("Sheet1"). Kopioi ennen: = closedBook.Sheets (1)closedBook.Close SaveChanges: = TottaApplication.ScreenUpdating = TottaEnd Sub

Kopioi taulukko toisesta työkirjasta avaamatta sitä

Päinvastoin, tämä koodi kopioi laskentataulukon suljetusta työkirjasta ilman, että sinun tarvitsee avata työkirja manuaalisesti.

123456789 Sub CopySheetFromClosedWB ()Application.ScreenUpdating = VääräAseta closedBook = Työkirjat.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")closedBook.Sheets ("Sheet1"). Kopioi ennen: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = FalseApplication.ScreenUpdating = TottaEnd Sub

Huomaa, että kummassakin esimerkissä poistimme ScreenUpdating -toiminnon käytöstä, jotta prosessi toimii taustalla.

Kopioi Excel -taulukko useita kertoja

Voit myös kopioida Excel -taulukon useita kertoja silmukan avulla.

1234567891011121314 Sub CopySheetMultipleTimes ()Dim n kokonaislukunaDim i Kuten kokonaislukuVirhe Jatka seuraavaksin = InputBox ("Kuinka monta kopiota haluat tehdä?")Jos n> 0 SittenSillä i = 1 - nActiveSheet.Copy After: = ActiveWorkbook.Sheets (Worksheets.Count)SeuraavaLoppu JosEnd Sub

wave wave wave wave wave