- Skopiuj arkusz roboczy do nowego skoroszytu
- Skopiuj wiele arkuszy do nowego skoroszytu
- Skopiuj arkusz w tym samym skoroszycie
- Przenieś arkusz
- Kopiuj i nazywaj arkusz
- Skopiuj arkusz do innego skoroszytu
- Skopiuj arkusz do zamkniętego skoroszytu
- Skopiuj arkusz z innego skoroszytu bez otwierania go
- Duplikuj arkusz Excela wiele razy
W tym samouczku omówimy, jak skopiować arkusz lub arkusz roboczy za pomocą VBA.
Skopiuj arkusz roboczy do nowego skoroszytu
Aby skopiować arkusz roboczy do nowego skoroszytu:
1 | Arkusze("Arkusz1").Kopiuj |
Skopiuj ActiveSheet do nowego skoroszytu
Aby skopiować ActiveSheet do nowego skoroszytu:
1 | Aktywny arkusz.Kopiuj |
Skopiuj wiele arkuszy do nowego skoroszytu
Aby skopiować wiele arkuszy do nowego skoroszytu:
1 | ActiveWindow.Wybrane arkusze.Kopiuj |
Skopiuj arkusz w tym samym skoroszycie
Zaczęliśmy od pokazania najprostszego przykładu kopiowania Arkuszy: kopiowania Arkuszy do nowego skoroszytu. Poniższe przykłady pokazują, jak skopiować arkusz w tym samym skoroszycie. Podczas kopiowania arkusza w skoroszycie należy określić lokalizację. Aby określić lokalizację, powiesz VBA, aby przeniósł arkusz roboczy PRZED lub PO innym arkuszu.
Skopiuj arkusz przed innym arkuszem
Tutaj określimy, aby skopiować i wkleić Arkusz przed Arkusz2
1 | Arkusze("Arkusz1").Kopiuj przed:=Arkusze("Arkusz2") |
Kopiuj arkusz przed pierwszym arkuszem
Zamiast określać nazwę arkusza, można również określić pozycję arkusza. Tutaj kopiujemy i wklejamy Arkusz przed pierwszym Arkuszem w skoroszycie.
1 | Arkusze("Arkusz1").Kopiuj przed:=Arkusze(1) |
Nowo utworzony arkusz będzie teraz pierwszym arkuszem w skoroszycie.
Kopiuj arkusz po ostatnim arkuszu
Użyj właściwości Po, aby powiedzieć VBA, aby wkleił arkusz PO kolejnym arkuszu. Tutaj skopiujemy i wkleimy arkusz po ostatnim arkuszu w skoroszycie:
1 | Arkusze("Arkusz1").Kopiuj po:=Arkusze(Arkusze.Liczba) |
Zauważ, że użyliśmy Sheets.Count do policzenia liczby arkuszy w skoroszycie.
Przenieś arkusz
Możesz także przenieść arkusz w skoroszycie, używając podobnej składni. Ten kod przeniesie Arkusz1 na koniec skoroszytu:
1 | Arkusze("Arkusz1").Przenieś po:=Arkusze(Arkusze.Liczba) |
Kopiuj i nazywaj arkusz
Po skopiowaniu i wklejeniu Arkusza nowo utworzony arkusz staje się ActiveSheet. Aby zmienić nazwę naszego nowego arkusza, po prostu użyj ActiveSheet.Name:
123456 | Sub CopySheetRename1()Arkusze("Arkusz1").Kopiuj po:=Arkusze(Arkusze.Liczba)ActiveSheet.Name = "Ostatni arkusz"Napis końcowy |
Jeśli nazwa arkusza już istnieje, powyższy kod wygeneruje błąd. Zamiast tego możemy użyć "On Error Resume Next", aby powiedzieć VBA, aby zignorował nazywanie arkusza i kontynuował resztę procedury:
12345678 | Sub CopySheetRename2()Arkusze("Arkusz1").Kopiuj po:=Arkusze(Arkusze.Liczba)Przy błędzie Wznów DalejActiveSheet.Name = "Ostatni arkusz"W przypadku błędu Przejdź do 0Napis końcowy |
Lub użyj naszej funkcji RangeExists, aby sprawdzić, czy nazwa arkusza już istnieje przed próbą skopiowania arkusza:
123456789101112131415161718 | Sub CopySheetRename3()Jeśli RangeExists("LastSheet") WtedyMsgBox "Arkusz już istnieje."W przeciwnym razieArkusze("Arkusz1").Kopiuj po:=Arkusze(Arkusze.Liczba)ActiveSheet.Name = "Ostatni arkusz"Zakończ, jeśliNapis końcowyFunkcja RangeExists(WhatSheet As String, opcjonalnie ByVal WhatRange As String = "A1") jako BooleanTest przyciemnienia jako zakresPrzy błędzie Wznów DalejUstaw test = ActiveWorkbook.Sheets(WhatSheet).Range(WhatRange)RangeExists = Błąd.Liczba = 0W przypadku błędu Przejdź do 0Koniec funkcji |
Kopiuj i nazwij arkusz na podstawie wartości komórki
Możesz także skopiować i nazwać arkusz na podstawie wartości komórki. Ten kod nazwie arkusz roboczy na podstawie wartości komórki w A1
12345678 | Sub CopySheetRenameFromCell()Arkusze("Arkusz1").Kopiuj po:=Arkusze(Arkusze.Liczba)Przy błędzie Wznów DalejActiveSheet.Name = Zakres("A1").ValueW przypadku błędu Przejdź do 0Napis końcowy |
Skopiuj arkusz do innego skoroszytu
Do tej pory pracowaliśmy z kopiowaniem arkuszy w skoroszycie. Teraz omówimy przykłady kopiowania i wklejania Arkuszy do innych skoroszytów. Ten kod skopiuje arkusz na początek innego skoroszytu:
1 | Arkusze("Arkusz1").Kopiuj przed:=Skoroszyty("Przykład.xlsm").Arkusze(1) |
Spowoduje to skopiowanie arkusza roboczego na koniec innego skoroszytu.
1 | Sheets("Sheet1").Copy After:=Workbooks("Example.xlsm").Sheets(Workbooks("Example.xlsm").Sheets.Count) |
Zauważ, że zastąpiliśmy! 1 z Skoroszyty("Przykład.xlsm").Arkusze.Liczba aby otrzymać ostatni Arkusz.
Skopiuj arkusz do zamkniętego skoroszytu
Możesz również chcieć skopiować arkusz do skoroszytu, który jest zamknięty. Ten kod otworzy zamknięty skoroszyt, dzięki czemu możesz skopiować do niego arkusz.
123456789 | Sub CopySheetToClosedWB()Application.ScreenUpdating = FałszSet closedBook = Workbooks.Open("D:\Dropbox\excel\articles\example.xlsm")Arkusze("Arkusz1").Kopiuj przed:=zamkniętyKsiążka.Arkusze(1)closedBook.Close ZapiszZmiany:=TrueApplication.ScreenUpdating = PrawdaNapis końcowy |
Skopiuj arkusz z innego skoroszytu bez otwierania go
I odwrotnie, ten kod skopiuje arkusz roboczy Z zamkniętego skoroszytu bez konieczności ręcznego otwierania skoroszytu.
123456789 | Sub CopySheetFromClosedWB()Application.ScreenUpdating = FałszSet closedBook = Workbooks.Open("D:\Dropbox\excel\articles\example.xlsm")closedBook.Sheets("Arkusz1").Kopiuj przed:=ThisWorkbook.Sheets(1)closedBook.Close ZapiszZmiany:=FałszApplication.ScreenUpdating = PrawdaNapis końcowy |
Zauważ, że w obu tych przykładach wyłączyliśmy ScreenUpdating, aby proces działał w tle.
Duplikuj arkusz Excela wiele razy
Możesz także wielokrotnie duplikować arkusz Excela za pomocą pętli.
1234567891011121314 | Sub CopySheetMultipleTimes()Dim n jako liczba całkowitaDim i jako liczba całkowitaPrzy błędzie Wznów Dalejn = InputBox("Ile kopii chcesz wykonać?")Jeśli n > 0 WtedyDla i = 1 To nActiveSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count)NastępnyZakończ, jeśliNapis końcowy |