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 |