Šajā apmācībā tiks apskatīts, kā kopēt lapu vai darblapu, izmantojot VBA.
Kopēt darblapu jaunā darbgrāmatā
Lai kopētu darblapu jaunā darbgrāmatā:
1 | Izklājlapas ("Sheet1"). Kopēt |
Kopēt ActiveSheet uz jaunu darbgrāmatu
Lai kopētu ActiveSheet uz jaunu darbgrāmatu:
1 | ActiveSheet. Kopēt |
Kopēt vairākas lapas uz jaunu darbgrāmatu
Lai kopētu vairākas lapas uz jaunu darbgrāmatu:
1 | ActiveWindow.SelectedSheets.Copy |
Kopēt lapu vienā darbgrāmatā
Sākumā parādījām vienkāršāko lapu kopēšanas piemēru: lapas (-u) kopēšana uz jaunu darbgrāmatu. Šie piemēri parādīs, kā kopēt lapu tajā pašā darbgrāmatā. Kopējot lapu darbgrāmatā, jums jānorāda atrašanās vieta. Lai norādītu atrašanās vietu, jūs teiksiet VBA pārvietot darblapu PIRMS vai PĒC citas darblapas.
Kopēt lapu pirms citas lapas
Šeit mēs norādīsim, kā kopēt un ielīmēt lapu pirms lapas 2
1 | Izklājlapas ("Sheet1"). Kopēt pirms: = Sheets ("Sheet2") |
Kopēt lapu pirms pirmās lapas
Lapas nosaukuma norādīšanas vietā varat norādīt arī lapas atrašanās vietu. Šeit mēs kopējam un ielīmējam lapu pirms pirmās darbgrāmatas lapas.
1 | Izklājlapas ("Sheet1"). Kopēt pirms: = Sheets (1) |
Jaunizveidotā lapa tagad būs pirmā lapa darbgrāmatā.
Kopēt lapu pēc pēdējās lapas
Izmantojiet rekvizītu Pēc, lai pateiktu VBA ielīmēt lapu PĒC citas lapas. Šeit mēs nokopēsim un ielīmēsim lapu pēc pēdējās darbgrāmatas lapas:
1 | Izklājlapas ("Sheet1"). Kopēt pēc: = Sheets (Sheets.Count) |
Ņemiet vērā, ka mēs izmantojām Izklājlapas. Saskaitiet, cik darbgrāmatā ir Izklājlapas.
Pārvietot lapu
Varat arī pārvietot lapu darbgrāmatā, izmantojot līdzīgu sintaksi. Šis kods pārvietos lapu 1 uz darbgrāmatas beigām:
1 | Izklājlapas ("Sheet1"). Pārvietot pēc: = Sheets (Sheets.Count) |
Kopēt un vārda lapu
Pēc lapas kopēšanas un ielīmēšanas jaunizveidotā lapa kļūst par ActiveSheet. Tātad, lai pārdēvētu mūsu jauno lapu, vienkārši izmantojiet ActiveSheet. Nosaukums:
123456 | Sub CopySheetRename1 ()Izklājlapas ("Sheet1"). Kopēt pēc: = Sheets (Sheets.Count)ActiveSheet.Name = "Pēdējā lapa"Beigu apakš |
Ja lapas nosaukums jau pastāv, iepriekš minētais kods radīs kļūdu. Tā vietā mēs varam izmantot “On Error Resume Next”, lai pateiktu VBA ignorēt lapas nosaukšanu un turpināt pārējo procedūru:
12345678 | Sub CopySheetRename2 ()Izklājlapas ("Sheet1"). Kopēt pēc: = Sheets (Sheets.Count)Par kļūdu Atsākt nākamoActiveSheet.Name = "Pēdējā lapa"Kļūda GoTo 0Beigu apakš |
Vai arī izmantojiet mūsu RangeExists funkciju, lai pirms lapas kopēšanas pārbaudītu, vai lapas nosaukums jau pastāv:
123456789101112131415161718 | Sub CopySheetRename3 ()Ja RangeExists ("LastSheet") TadMsgBox "Izklājlapa jau pastāv."CitādiIzklājlapas ("Sheet1"). Kopēt pēc: = Sheets (Sheets.Count)ActiveSheet.Name = "Pēdējā lapa"Beigas JaBeigu apakšFunkciju diapazons Pastāv (WhatSheet kā virkne, pēc izvēles ByVal WhatRange As String = "A1") kā BūlaDim tests kā diapazonsPar kļūdu Atsākt nākamoIestatīt testu = ActiveWorkbook.Sheets (WhatSheet). Range (WhatRange)RangeExists = Kļūdas numurs = 0Kļūda GoTo 0Beigu funkcija |
Kopējiet un nosaukuma lapu, pamatojoties uz šūnas vērtību
Iespējams, vēlēsities nokopēt un nosaukt lapu, pamatojoties uz šūnas vērtību. Šis kods nosauks darblapu, pamatojoties uz šūnas vērtību A1
12345678 | Sub CopySheetRenameFromCell ()Izklājlapas ("Sheet1"). Kopēt pēc: = Sheets (Sheets.Count)Par kļūdu Atsākt nākamoActiveSheet.Name = Diapazons ("A1"). VērtībaKļūda GoTo 0Beigu apakš |
Kopēt darblapu citā darbgrāmatā
Līdz šim mēs esam strādājuši ar lapu izkopēšanu darbgrāmatā. Tagad mēs apskatīsim piemērus, kā kopēt un ielīmēt lapas citās darbgrāmatās. Šis kods kopēs lapu uz citas darbgrāmatas sākumu:
1 | Izklājlapas ("Lapa1"). Kopēt pirms: = Darbgrāmatas ("Piemērs.xlsm"). Lapas (1) |
Tādējādi darblapa tiks kopēta citas darbgrāmatas beigās.
1 | Izklājlapas ("Lapa1"). Kopēt pēc: = Darbgrāmatas ("Piemērs.xlsm"). Lapas (Darbgrāmatas ("Piemērs.xlsm"). Izklājlapas.Skaitlis) |
Ievērojiet, ka mēs nomainījām 1 ar Darbgrāmatas (“Piemērs.xlsm”). Lapas. Skait lai iegūtu pēdējo darblapu.
Kopēt darblapu slēgtā darbgrāmatā
Iespējams, vēlēsities arī nokopēt darblapu uz aizvērtu darbgrāmatu. Šis kods atvērs slēgtu darbgrāmatu, lai tajā varētu kopēt lapu.
123456789 | Sub CopySheetToClosedWB ()Application.ScreenUpdating = NepareiziSet closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")Izklājlapas ("1. lapa"). Kopēt pirms: = slēgta grāmata. Izklājlapas (1)aizvērta grāmata.Slēgt SaveChanges: = TrueApplication.ScreenUpdating = PatiessBeigu apakš |
Kopējiet lapu no citas darbgrāmatas, to neatverot
Un otrādi, šis kods kopēs darblapu no slēgtās darbgrāmatas, bez nepieciešamības manuāli atvērt darbgrāmatu.
123456789 | Sub CopySheetFromClosedWB ()Application.ScreenUpdating = NepareiziSet closedBook = Workbooks.Open ("D: \ Dropbox \ excel \ articles \ example.xlsm")closedBook.Sheets ("Sheet1"). Copy Before: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = NepareiziApplication.ScreenUpdating = PatiessBeigu apakš |
Ņemiet vērā, ka abos šajos piemēros mēs atspējojām ekrāna atjaunināšanu, lai process darbotos fonā.
Dublējiet Excel lapu vairākas reizes
Varat arī dublēt Excel lapu vairākas reizes, izmantojot cilpu.
1234567891011121314 | Sub CopySheetMultipleTimes ()Dim n Kā vesels skaitlisDim i As IntegerPar kļūdu Atsākt nākamon = InputBox ("Cik kopijas vēlaties izveidot?")Ja n> 0 TadAttiecībā uz i = 1 līdz nActiveSheet.Copy After: = ActiveWorkbook.Sheets (Worksheets.Count)NākamaisBeigas JaBeigu apakš |