VBA kopēšanas lapa / kopēšanas lapa uz citu darbgrāmatu

Š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š

Jums palīdzēs attīstību vietā, daloties lapu ar draugiem

wave wave wave wave wave