VBA -kopieringsark / kopieringsark til en annen arbeidsbok

Denne opplæringen vil dekke hvordan du kopierer et ark eller et regneark ved hjelp av VBA.

Kopier regneark til ny arbeidsbok

Slik kopierer du et regneark til en ny arbeidsbok:

1 Ark ("Ark1"). Kopi

Kopier ActiveSheet til Ny arbeidsbok

Slik kopierer du ActiveSheet til en ny arbeidsbok:

1 ActiveSheet.Copy

Kopier flere ark til ny arbeidsbok

Slik kopierer du flere ark til en ny arbeidsbok:

1 ActiveWindow.SelectedSheets.Copy

Kopier ark i samme arbeidsbok

Vi begynte med å vise deg det enkleste eksemplet på kopieringsark: kopiering av ark (er) til en ny arbeidsbok. Disse eksemplene nedenfor viser deg hvordan du kopierer et ark i den samme arbeidsboken. Når du kopierer et ark i en Worbook, må du angi et sted. For å spesifisere et sted, vil du be VBA om å flytte regnearket FØR eller ETTER et annet regneark.

Kopier ark før et nytt ark

Her vil vi spesifisere for å kopiere og lime inn arket før ark2

1 Ark ("Ark1"). Kopier før: = Ark ("Ark2")

Kopier ark før første ark

I stedet for å spesifisere arknavnet, kan du også angi arkposisjonen. Her kopierer og limer vi inn et ark før det første arket i arbeidsboken.

1 Ark ("Ark1"). Kopier før: = Ark (1)

Det nyopprettede arket blir nå det første arket i arbeidsboken.

Kopier ark etter siste ark

Bruk egenskapen After til å be VBA lime inn arket ETTER et nytt ark. Her vil vi kopiere og lime inn et ark etter det siste arket i arbeidsboken:

1 Ark ("Sheet1"). Kopier etter: = Sheets (Sheets.Count)

Legg merke til at vi brukte Sheets.Count for å telle antall ark i arbeidsboken.

Flytt ark

Du kan også flytte et ark i en arbeidsbok ved hjelp av lignende syntaks. Denne koden flytter Ark1 til slutten av arbeidsboken:

1 Ark ("Sheet1"). Flytt etter: = Sheets (Sheets.Count)

Kopi og navneblad

Etter at du har kopiert og limt inn et ark, blir det nyopprettede arket ActiveSheet. Så for å gi nytt navn til det nye arket, bare bruk ActiveSheet.Name:

123456 Sub CopySheetRename1 ()Ark ("Sheet1"). Kopier etter: = Sheets (Sheets.Count)ActiveSheet.Name = "LastSheet"Slutt Sub

Hvis arknavnet allerede eksisterer, vil koden ovenfor generere en feil. I stedet kan vi bruke "On Error Resume Next" for å be VBA om å ignorere navngivning av arket og fortsette med resten av prosedyren:

12345678 Sub CopySheetRename2 ()Ark ("Sheet1"). Kopier etter: = Sheets (Sheets.Count)Ved feil Fortsett nesteActiveSheet.Name = "LastSheet"Ved feil GoTo 0Slutt Sub

Eller bruk vår RangeExists -funksjon for å teste om arknavnet allerede eksisterer før du prøver å kopiere arket:

123456789101112131415161718 Sub CopySheetRename3 ()Hvis RangeExists ("LastSheet") DaMsgBox "Ark finnes allerede."EllersArk ("Sheet1"). Kopier etter: = Sheets (Sheets.Count)ActiveSheet.Name = "LastSheet"Slutt omSlutt SubFunction RangeExists (WhatSheet As String, Valgfritt ByVal WhatRange As String = "A1") Som boolskDim test As RangeVed feil Fortsett nesteSett test = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Err.Number = 0Ved feil GoTo 0Sluttfunksjon

Kopier og navneark basert på celleverdi

Du vil kanskje også kopiere og navngi et ark basert på en celleverdi. Denne koden navngir regnearket basert på celleverdien i A1

12345678 Sub CopySheetRenameFromCell ()Ark ("Sheet1"). Kopier etter: = Sheets (Sheets.Count)Ved feil Fortsett nesteActiveSheet.Name = Område ("A1"). VerdiVed feil GoTo 0Slutt Sub

Kopier regnearket til en annen arbeidsbok

Så langt har vi jobbet med å kopiere ark i en arbeidsbok. Nå vil vi dekke eksempler for å kopiere og lime inn ark i andre arbeidsbøker. Denne koden vil kopiere et ark til begynnelsen av en annen arbeidsbok:

1 Ark ("Ark1"). Kopier før: = Arbeidsbøker ("Eksempel.xlsm"). Ark (1)

Dette vil kopiere et regneark til slutten av en annen arbeidsbok.

1 Ark ("Ark1"). Kopier etter: = Arbeidsbøker ("Eksempel.xlsm"). Regneark (Arbeidsbøker ("Eksempel.xlsm"). Regneark.

Legg merke til at vi byttet ut 1 med Arbeidsbøker ("Eksempel.xlsm"). Ark. Antall for å få det siste regnearket.

Kopier regnearket til en lukket arbeidsbok

Du vil kanskje også kopiere et regneark til en arbeidsbok som er lukket. Denne koden åpner en lukket arbeidsbok slik at du kan kopiere et ark til den.

123456789 Sub CopySheetToClosedWB ()Application.ScreenUpdating = FalskAngi closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ artikler \ eksempel.xlsm")Sheets ("Sheet1"). Kopier før: = closedBook.Sheets (1)closedBook.Close SaveChanges: = TrueApplication.ScreenUpdating = TrueSlutt Sub

Kopier ark fra en annen arbeidsbok uten å åpne det

Motsatt vil denne koden kopiere et regneark FRA en lukket arbeidsbok uten at du trenger å åpne arbeidsboken manuelt.

123456789 Sub CopySheetFromClosedWB ()Application.ScreenUpdating = FalskAngi closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ artikler \ eksempel.xlsm")closedBook.Sheets ("Sheet1"). Kopier før: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = FalseApplication.ScreenUpdating = TrueSlutt Sub

Legg merke til at vi i begge disse eksemplene deaktiverte ScreenUpdating slik at prosessen kjører i bakgrunnen.

Dupliser Excel -ark flere ganger

Du kan også duplisere et Excel -ark flere ganger ved å bruke en Loop.

1234567891011121314 Sub CopySheetMultipleTimes ()Dim n Som heltallDim i As IntegerVed feil Fortsett nesten = InputBox ("Hvor mange kopier vil du lage?")Hvis n> 0 DaFor i = 1 Til nActiveSheet.Copy After: = ActiveWorkbook.Sheets (Worksheets.Count)NesteSlutt omSlutt Sub

Du vil bidra til utvikling av området, dele siden med vennene dine

wave wave wave wave wave