- Kopijuoti darbalapį į naują darbaknygę
- Nukopijuokite kelis lapus į naują darbaknygę
- Kopijuoti lapą toje pačioje darbaknygėje
- Perkelti lapą
- Kopijuoti ir pavadinimo lapą
- Nukopijuokite darbalapį į kitą darbaknygę
- Nukopijuokite darbalapį į uždarą darbaknygę
- Nukopijuokite lapą iš kitos darbaknygės jo neatidarę
- „Excel“ lapo kopijavimas kelis kartus
Š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 |