Skopiuj arkusz VBA / skopiuj arkusz do innego skoroszytu

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

Będziesz pomóc w rozwoju serwisu, dzieląc stronę ze swoimi znajomymi

wave wave wave wave wave