- Kopiér regneark til ny projektmappe
- Kopier flere ark til ny projektmappe
- Kopier ark inden for samme projektmappe
- Flyt ark
- Kopi og navneblad
- Kopiér regneark til en anden projektmappe
- Kopiér regneark til en lukket projektmappe
- Kopier ark fra en anden projektmappe uden at åbne det
- Dupliker Excel -ark flere gange
Denne vejledning dækker hvordan man kopierer et ark eller et regneark ved hjælp af VBA.
Kopiér regneark til ny projektmappe
Sådan kopierer du et regneark til en ny projektmappe:
1 | Ark ("Ark1"). Kopi |
Kopier ActiveSheet til Ny projektmappe
Sådan kopierer du ActiveSheet til en ny projektmappe:
1 | ActiveSheet.Copy |
Kopier flere ark til ny projektmappe
Sådan kopierer du flere ark til en ny projektmappe:
1 | ActiveWindow.SelectedSheets.Copy |
Kopier ark inden for samme projektmappe
Vi startede med at vise dig det mest simple eksempler på kopiark: kopiering af ark (er) til en ny projektmappe. Disse eksempler herunder viser dig, hvordan du kopierer et ark i den samme projektmappe. Når du kopierer et ark i en Worbook, skal du angive en placering. For at angive en placering, vil du fortælle VBA at flytte regnearket FØR eller EFTER et andet regneark.
Kopier ark før et andet ark
Her vil vi angive at kopiere og indsætte arket før Sheet2
1 | Ark ("Ark1"). Kopi før: = Ark ("Ark2") |
Kopier ark før første ark
I stedet for at angive arknavnet kan du også angive arkpositionen. Her kopierer og indsætter vi et ark før det første ark i projektmappen.
1 | Ark ("Ark1"). Kopi før: = Ark (1) |
Det nyoprettede ark bliver nu det første ark i projektmappen.
Kopier ark efter sidste ark
Brug egenskaben After til at fortælle VBA at indsætte arket efter et andet ark. Her vil vi kopiere og indsætte et ark efter det sidste ark i projektmappen:
1 | Ark ("Sheet1"). Kopiér efter: = Sheets (Sheets.Count) |
Bemærk, at vi brugte Sheets.Count til at tælle antallet af ark i projektmappen.
Flyt ark
Du kan også flytte et ark i en projektmappe ved hjælp af lignende syntaks. Denne kode flytter Sheet1 til slutningen af projektmappen:
1 | Ark ("Sheet1"). Flyt efter: = Sheets (Sheets.Count) |
Kopi og navneblad
Efter kopiering og indsættelse af et ark bliver det nyoprettede ark til ActiveSheet. Så for at omdøbe vores nye ark, skal du blot bruge ActiveSheet.Name:
123456 | Sub CopySheetRename1 ()Ark ("Sheet1"). Kopiér efter: = Sheets (Sheets.Count)ActiveSheet.Name = "LastSheet"Afslut Sub |
Hvis arknavnet allerede findes, genererer ovenstående kode en fejl. I stedet kan vi bruge "On Error Resume Next" til at fortælle VBA at ignorere navngivning af arket og fortsætte med resten af proceduren:
12345678 | Sub CopySheetRename2 ()Ark ("Sheet1"). Kopiér efter: = Sheets (Sheets.Count)Ved fejl Genoptag næsteActiveSheet.Name = "LastSheet"Ved fejl GoTo 0Afslut Sub |
Eller brug vores RangeExists -funktion til at teste, om arknavnet allerede findes, før du forsøger at kopiere arket:
123456789101112131415161718 | Sub CopySheetRename3 ()Hvis RangeExists ("LastSheet") SåMsgBox "Ark findes allerede."AndetArk ("Sheet1"). Kopiér efter: = Sheets (Sheets.Count)ActiveSheet.Name = "LastSheet"Afslut HvisAfslut SubFunction RangeExists (WhatSheet As String, Valgfri ByVal WhatRange As String = "A1") Som boolskDim test As RangeVed fejl Genoptag næsteIndstil test = ActiveWorkbook.Sheets (WhatSheet) .Range (WhatRange)RangeExists = Err.Number = 0Ved fejl GoTo 0Afslut funktion |
Kopier og navneskema baseret på celleværdi
Du vil måske også kopiere og navngive et ark baseret på en celleværdi. Denne kode navngiver regnearket baseret på celleværdien i A1
12345678 | Sub CopySheetRenameFromCell ()Ark ("Sheet1"). Kopiér efter: = Sheets (Sheets.Count)Ved fejl Genoptag næsteActiveSheet.Name = Område ("A1"). VærdiVed fejl GoTo 0Afslut Sub |
Kopiér regneark til en anden projektmappe
Indtil videre har vi arbejdet med at kopiere ark i en projektmappe. Nu vil vi dække eksempler til kopiering og indsætning af ark til andre projektmapper. Denne kode vil kopiere et ark til begyndelsen af en anden projektmappe:
1 | Ark ("Ark1"). Kopi før: = projektmapper ("eksempel.xlsm"). Ark (1) |
Dette kopierer et regneark til slutningen af en anden projektmappe.
1 | Ark ("Ark1"). Kopi efter: = projektmapper ("eksempel.xlsm"). Ark (projektmapper ("eksempel.xlsm"). Sheets.Count) |
Bemærk, at vi udskiftede 1 med Arbejdsbøger ("Eksempel.xlsm"). Sheets.Count for at få det sidste regneark.
Kopiér regneark til en lukket projektmappe
Du vil måske også kopiere et regneark til en projektmappe, der er lukket. Denne kode åbner en lukket projektmappe, så du kan kopiere et ark ind i den.
123456789 | Sub CopySheetToClosedWB ()Application.ScreenUpdating = FalskIndstil closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ artikler \ eksempel.xlsm")Ark ("Ark1"). Kopi før: = lukketBook.Sheets (1)closedBook.Close SaveChanges: = TrueApplication.ScreenUpdating = TrueAfslut Sub |
Kopier ark fra en anden projektmappe uden at åbne det
Omvendt vil denne kode kopiere et regneark FRA en lukket projektmappe uden at du behøver at åbne projektmappen manuelt.
123456789 | Sub CopySheetFromClosedWB ()Application.ScreenUpdating = FalskIndstil closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ artikler \ eksempel.xlsm")closedBook.Sheets ("Sheet1"). Kopier før: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = FalskApplication.ScreenUpdating = TrueAfslut Sub |
Bemærk, at vi i begge disse eksempler deaktiverede ScreenUpdating, så processen kører i baggrunden.
Dupliker Excel -ark flere gange
Du kan også kopiere et Excel -ark flere gange ved hjælp af en Loop.
1234567891011121314 | Sub CopySheetMultipleTimes ()Dim n Som heltalDim i As IntegerVed fejl Genoptag næsten = InputBox ("Hvor mange kopier vil du lave?")Hvis n> 0 SåFor i = 1 Til nActiveSheet.Copy After: = ActiveWorkbook.Sheets (Worksheets.Count)NæsteAfslut HvisAfslut Sub |