VBA kopijavimo lapas / kopijavimo lapas į kitą darbo knygą

Ši pamoka apims, kaip nukopijuoti lapą ar darbalapį naudojant VBA.

Kopijuoti darbalapį į naują darbaknygę

Norėdami nukopijuoti darbalapį į naują darbaknygę:

1 Skaičiuoklės („Sheet1“). Kopija

Nukopijuokite „ActiveSheet“ į naują darbaknygę

Norėdami nukopijuoti „ActiveSheet“ į naują darbaknygę:

1 ActiveSheet.Copy

Nukopijuokite kelis lapus į naują darbaknygę

Norėdami nukopijuoti kelis lapus į naują darbaknygę:

1 ActiveWindow.SelectedSheets.Copy

Kopijuoti lapą toje pačioje darbaknygėje

Pradėjome parodydami paprasčiausią lapų kopijavimo pavyzdį: lapų (-ų) kopijavimą į naują darbaknygę. Šie pavyzdžiai parodys, kaip kopijuoti lapą toje pačioje darbaknygėje. Kopijuodami lapą darbaknygėje, turite nurodyti vietą. Norėdami nurodyti vietą, jūs liepsite VBA perkelti darbalapį prieš arba po kito darbalapio.

Kopijuoti lapą prieš kitą lapą

Čia nurodysime kopijuoti ir įklijuoti lapą prieš „Sheet2“

1 Skaičiuoklės („Sheet1“). Kopijuoti anksčiau: = Sheets („Sheet2“)

Kopijuoti lapą prieš pirmąjį lapą

Užuot nurodę lapo pavadinimą, taip pat galite nurodyti lapo padėtį. Čia mes kopijuojame ir įklijuojame lapą prieš pirmąjį darbo knygos lapą.

1 Skaičiuoklės („Sheet1“). Kopijuoti anksčiau: = Sheets (1)

Naujai sukurtas lapas dabar bus pirmasis lapas darbaknygėje.

Kopijuoti lapą po paskutinio lapo

Naudokite ypatybę „After“, kad VBA nurodytų įklijuoti lapą po kito lapo. Čia nukopijuosime ir įklijuosime lapą po paskutinio darbo knygos lapo:

1 Skaičiuoklės („Sheet1“). Kopijuoti po: = Sheets (Sheets.Count)

Atkreipkite dėmesį, kad mes naudojome „Skaičiuokles“. Suskaičiuokite skaičiuoklę „Darbaknygė“.

Perkelti lapą

Taip pat galite perkelti darbalapio lapą naudodami panašią sintaksę. Šis kodas perkelia 1 lapą į darbaknygės pabaigą:

1 Skaičiuoklės („Sheet1“). Perkelti po: = Sheets (Sheets.Count)

Kopijuoti ir pavadinimo lapą

Nukopijavus ir įklijavus lapą, naujai sukurtas lapas tampa „ActiveSheet“. Taigi, norėdami pervadinti naują lapą, tiesiog naudokite „ActiveSheet“. Pavadinimas:

123456 Sub CopySheetRename1 ()Skaičiuoklės („Sheet1“). Kopijuoti po: = Sheets (Sheets.Count)ActiveSheet.Name = "Paskutinis lapas"Pabaiga Sub

Jei lapo pavadinimas jau yra, aukščiau pateiktas kodas sukels klaidą. Vietoj to mes galime naudoti „On Error Resume Next“, kad nurodytume VBA ignoruoti lapo pavadinimą ir tęsti likusią procedūros dalį:

12345678 Sub CopySheetRename2 ()Skaičiuoklės („Sheet1“). Kopijuoti po: = Sheets (Sheets.Count)Dėl klaidos Tęsti toliauActiveSheet.Name = "Paskutinis lapas"Klaida „GoTo 0“Pabaiga Sub

Arba prieš bandydami kopijuoti lapą naudokite funkciją „RangeExists“, kad patikrintumėte, ar „Sheet“ pavadinimas jau yra:

123456789101112131415161718 Sub CopySheetRename3 ()Jei „RangeExists“ („Paskutinis lapas“) Tada„MsgBox“ lapas jau egzistuoja.KitasSkaičiuoklės („Sheet1“). Kopijuoti po: = Sheets (Sheets.Count)ActiveSheet.Name = "Paskutinis lapas"Pabaiga JeiPabaiga SubFunkcijų diapazonas Egzistuoja („WhatSheet“ kaip eilutė, pasirinktinai „ByVal WhatRange As String“ = „A1“) kaip loginis„Dim“ bandymas kaip diapazonasDėl klaidos Tęsti toliauNustatyti testą = ActiveWorkbook.Sheets (WhatSheet). Range (WhatRange)RangeExists = Klaidų skaičius = 0Klaida „GoTo 0“Pabaigos funkcija

Nukopijuokite ir pavadinimo lapą pagal langelio vertę

Taip pat galbūt norėsite nukopijuoti ir pavadinti lapą pagal langelio vertę. Šis kodas pavadins darbalapį pagal langelio reikšmę A1

12345678 Sub CopySheetRenameFromCell ()Skaičiuoklės („Sheet1“). Kopijuoti po: = Sheets (Sheets.Count)Dėl klaidos Tęsti toliauActiveSheet.Name = Diapazonas („A1“). ReikšmėKlaida „GoTo 0“Pabaiga Sub

Nukopijuokite darbalapį į kitą darbaknygę

Iki šiol dirbome su Skaičiuoklių kopijavimu darbo knygoje. Dabar apžvelgsime pavyzdžius, kaip nukopijuoti ir įklijuoti Skaičiuokles į kitas darbaknyges. Šis kodas nukopijuos lapą į kitos darbaknygės pradžią:

1 Skaičiuoklės („Lapas1“). Kopijuoti anksčiau: = Darbaknygės („Pavyzdys.xlsm“). Lakštai (1)

Taip darbalapis nukopijuojamas į kitos darbaknygės pabaigą.

1 Skaičiuoklės („Lapas1“). Kopijuoti po: = Darbaknygės („Pavyzdys.xlsm“). Lakštai (Darbaknygės („Pavyzdys.xlsm“). Lapai.Skaičius)

Atkreipkite dėmesį, kad pakeitėme 1 su Darbaknygės („Pavyzdys.xlsm“). Lakštai.Skaičius gauti paskutinį darbalapį.

Nukopijuokite darbalapį į uždarą darbaknygę

Taip pat galbūt norėsite nukopijuoti darbalapį į uždarytą darbaknygę. Šis kodas atidarys uždarytą darbaknygę, kad galėtumėte į ją nukopijuoti lapą.

123456789 Sub CopySheetToClosedWB ()Application.ScreenUpdating = NetiesaNustatykite uždarytą knygą = Darbaknygės. Atidarykite ("D: \ Dropbox \ excel \ articles \ example.xlsm")Skaičiuoklės („Lapas1“). Kopijuoti anksčiau: = uždaryta knyga.Skaičiuoklės (1)closeBook.Uždaryti SaveChanges: = TiesaApplication.ScreenUpdating = TiesaPabaiga Sub

Nukopijuokite lapą iš kitos darbaknygės jo neatidarę

Ir atvirkščiai, šis kodas nukopijuos darbalapį iš uždarytos darbaknygės, jums nereikės rankiniu būdu atidaryti darbaknygės.

123456789 Sub CopySheetFromClosedWB ()Application.ScreenUpdating = NetiesaNustatykite uždarytą knygą = Darbaknygės. Atidarykite ("D: \ Dropbox \ excel \ articles \ example.xlsm")closedBook.Sheets ("Sheet1"). Copy Before: = ThisWorkbook.Sheets (1)closedBook.Close SaveChanges: = NetiesaApplication.ScreenUpdating = TiesaPabaiga Sub

Atkreipkite dėmesį, kad abiejuose šiuose pavyzdžiuose mes išjungėme „ScreenUpdating“, kad procesas vyktų fone.

„Excel“ lapo kopijavimas kelis kartus

Taip pat galite kelis kartus kopijuoti „Excel“ lapą naudodami ciklą.

1234567891011121314 Sub CopySheetMultipleTimes ()Dim n Kaip sveikasis skaičiusDim i As IntegerDėl klaidos Tęsti toliaun = „InputBox“ („Kiek kopijų norite padaryti?“)Jei n> 0 TadaJei i = 1 iki n„ActiveSheet.Copy After“: = „ActiveWorkbook.Sheets“ („Worksheets.Count“)KitasPabaiga JeiPabaiga Sub

Padėsite svetainės plėtrą, dalintis puslapį su draugais

wave wave wave wave wave