Jak zduplikować arkusz w Excelu za pomocą VBA

  • Udostępnij To
Michael Brown

Samouczek zawiera zbiór makr do duplikowania arkuszy w Excelu: kopiowanie i zmiana nazwy na podstawie wartości komórki, kopiowanie wielu arkuszy, kopiowanie aktywnego arkusza do innego pliku bez jego otwierania i inne.

Ręczne kopiowanie arkuszy w Excelu jest dość szybkie i proste... jeśli wykonuje się je tylko raz lub dwa razy. Wielokrotne powielanie wielu arkuszy jest nudne i czasochłonne. Na tej stronie znajdziesz kilka przydatnych makr, które zautomatyzują to zadanie.

    Excel VBA do kopiowania arkusza do nowego skoroszytu

    To najprostsze jednolinijkowe makro robi dokładnie to, co sugeruje jego nazwa - kopiuje aktywny arkusz do nowego skoroszytu.

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    Kopiowanie wielu arkuszy w Excelu za pomocą VBA

    Jeśli chciałbyś skopiować kilka arkuszy z aktywnego skoroszytu do nowego, zaznacz wszystkie interesujące Cię arkusze i uruchom to makro:

    Public Sub CopySelectedSheets() ActiveWindow.SelectedSheets.Copy End Sub

    Excel VBA do kopiowania arkusza do innego skoroszytu

    W zależności od tego, gdzie chcesz wstawić skopiowany arkusz, użyj jednego z następujących makr.

    Kopiowanie arkusza na początek innego skoroszytu

    To makro kopiuje aktywny arkusz przed wszystkimi innymi arkuszami w pliku docelowym, Księga1 Aby skopiować do innego pliku, zastąp "Book1.xlsx" pełną nazwą docelowego skoroszytu.

    Public Sub CopySheetToBeginningAnotherWorkbook() activeSheet.Copy Before:=Workbooks( "Book1.xlsx" ).Sheets(1) End Sub

    Kopiowanie arkusza na koniec innego skoroszytu

    Ten fragment kodu powiela aktywny arkusz i umieszcza kopię na końcu Księga1 Ponownie pamiętaj, aby zastąpić "Book1.xlsx" nazwą docelowego skoroszytu.

    Public Sub CopySheetToEndAnotherWorkbook() activeSheet.Copy After:=Workbooks( "Book1.xlsx" ).Sheets(Workbooks( "Book1.xlsx" ).Worksheets.Count) End Sub

    Uwaga. Aby makra działały, docelowy skoroszyt musi być zapisany na dysku twardym lub w sieci.

    Kopiowanie arkusza do wybranego skoroszytu

    Aby móc skopiować bieżący arkusz do dowolnego otwartego skoroszytu, można utworzyć formularz UserForm (o nazwie UserForm1 ) z ListBox kontrola ( o nazwie ListBox1 ) oraz dwa przyciski:

    Następnie klikamy dwukrotnie na formularz i w oknie Code wklejamy poniższy kod:

    Public SelectedWorkbook As String Private Sub UserForm_Initialize() SelectedWorkbook = "" ListBox1.Clear For Each wbk In Application.Workbooks ListBox1.AddItem (wbk.Name) Next End Sub Private Sub CommandButton1_Click() If ListBox1.ListIndex> -1 Then SelectedWorkbook = ListBox1.List(ListBox1.ListIndex) End If Me.Hide End Sub Private Sub CommandButton2_Click() SelectedWorkbook = "" Me.Hide EndSub

    Mając przygotowany formularz UserForm, możesz użyć jednego z poniższych makr, aby skopiować aktywny arkusz do wybranego przez siebie skoroszytu.

    Kopiowanie arkusza do początek wybranego skoroszytu :

    Public Sub CopySheetToBeginningAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy Before:=Workbooks(UserForm1.SelectedWorkbook).Sheets(1) End If Unload UserForm1 End Sub

    Kopia arkusza do koniec wybranego skoroszytu :

    Public Sub CopySheetToEndAnotherWorkbook() Load UserForm1 UserForm1.Show If (UserForm1.SelectedWorkbook "" ) Then activeSheet.Copy After:=Workbooks( _ UserForm1.SelectedWorkbook).Sheets( _ Workbooks(UserForm1.SelectedWorkbook). _ Worksheets.Count) End If Unload UserForm1 End Sub.

    Po uruchomieniu w Excelu makro pokaże Ci listę wszystkich aktualnie otwartych skoroszytów. Wybierasz potrzebny i klikasz OK:

    Makro Excel do kopiowania arkusza i zmiany nazwy

    Gdy kopiujesz arkusz w Excelu, replika otrzymuje nazwę w domyślnym formacie np. Arkusz1 (2) Poniższe makra mogą oszczędzić Ci kłopotu z ręczną zmianą domyślnej nazwy.

    Ten kod duplikuje aktywny arkusz, nadaje kopii nazwę "Arkusz testowy" (możesz ją zastąpić dowolną inną nazwą) i umieszcza skopiowany arkusz na końcu bieżącego skoroszytu.

    Public Sub CopySheetAndRenamePredefined() activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = "Test Sheet" End Sub

    Aby umożliwić użytkownikowi określić nazwę dla skopiowanego arkusza , użyj tego kodu:

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "Wpisz nazwę dla kopiowanego arkusza" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    Po uruchomieniu makro wyświetla następujące okno wejściowe, w którym należy wpisać żądaną nazwę i nacisnąć OK:

    Makro Excel do kopiowania arkusza i zmiany nazwy na podstawie wartości komórki

    W niektórych sytuacjach wygodniejsze może być nazwanie kopii konkretną wartością komórki, na przykład nagłówka kolumny. W tym celu wystarczy wykonać powyższy kod i podać wartość komórki aktualnie wybrana komórka Podobnie jak w poprzednim przykładzie, kopia zostanie umieszczona na końcu aktywnego skoroszytu.

    Najtrudniejszą częścią byłoby, aby użytkownicy zawsze wybierali właściwą komórkę przed uruchomieniem makra :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "Wprowadź nazwę dla kopiowanego arkusza" , "Kopiuj arkusz" , ActiveCell.Value) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub.

    Alternatywnie można zakodować adres komórki według której ma być nazwana kopia, komórka A1 w poniższym kodzie. Aby nazwać skopiowany arkusz na podstawie innej komórki, zastąp A1 odpowiednim odwołaniem do komórki.

    Public Sub CopySheetAndRenameByCell2() Dim wks As Worksheet Set wks = activeSheet activeSheet.Copy After:=Worksheets(Sheets.Count) If wks.Range( "A1" ).Value "" Then On Error Resume Next activeSheet.Name = wks.Range( "A1" ).Value End If wks.Activate End Sub.

    Makro do kopiowania arkusza do zamkniętego skoroszytu

    To makro kopiuje aktywny arkusz na koniec zamkniętego skoroszytu. Nazwa innego skoroszytu nie jest określona w kodzie - makro otworzy standardowe okno Eksploratora Windows i pozwoli wybrać dowolny plik docelowy:

    Po wybraniu pliku i kliknięciu Otwórz , makro skopiuje aktywny arkusz i automatycznie zamknie docelowy skoroszyt.

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel Files (*.xlsx), *.xlsx" ) If fileName False Then Application.ScreenUpdating = False Set currentSheet = Application.activeSheet Set closedBook = Workbooks. Open (fileName) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count)closedBook. Close ( True ) Application.ScreenUpdating = True End If End Sub

    Excel VBA do kopiowania arkusza z innego skoroszytu bez otwierania

    To makro umożliwia skopiowanie arkusza z innego pliku Excela bez jego otwierania. Skopiowany arkusz zostanie wstawiony na koniec bieżącego skoroszytu.

    Pamiętaj tylko, aby dokonać kilku zamian w kodzie:

    • C:\NNależy zmienić ścieżkę i nazwę skoroszytu, z którego chcemy skopiować arkusz.
    • Arkusz1 należy zastąpić nazwą arkusza, który chcemy skopiować.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False Set sourceBook = Workbooks. Open ("C:\") sourceBook.Sheets("Sheet1").Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook. Close Application.ScreenUpdating = True End Sub

    Excel VBA do powielania arkusza wiele razy

    Czasami może zaistnieć potrzeba zduplikowania tego samego arkusza więcej niż raz, na przykład w celu przetestowania różnych formuł na tym samym zestawie danych. Można to łatwo zrobić za pomocą poniższego makra.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "Ile kopii aktywnego arkusza chcesz wykonać?" ) If n>= 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub.

    Otwórz oryginalny arkusz, uruchom makro, określ ile kopii aktywnego arkusza chcesz wykonać i kliknij OK :

    Jak zduplikować arkusze w Excelu za pomocą VBA

    Aby skopiować arkusz w Excelu za pomocą jednego z powyższych makr, możesz wstawić kod VBA do własnego skoroszytu lub uruchomić makro z naszego przykładowego skoroszytu.

    Jak dodać makro do swojego skoroszytu

    Aby wstawić kod do swojego skoroszytu, wykonaj następujące kroki:

    1. Otwórz arkusz, który chcesz skopiować.
    2. Naciśnij Alt + F11, aby otworzyć edytor Visual Basic.
    3. W lewym panelu kliknij prawym przyciskiem myszy ThisWorkbook , a następnie kliknij Wkładka > Moduł .
    4. Wklejenie kodu w oknie Code.
    5. Naciśnij F5, aby uruchomić makro.

    Szczegółową instrukcję krok po kroku znajdziesz na stronie Jak wstawić kod VBA w Excelu.

    Jak uruchomić makro z naszego przykładowego skoroszytu

    Alternatywnie możesz pobrać nasz przykładowy skoroszyt do Duplikowania arkuszy Excela i uruchomić kod stamtąd.

    Przykładowy skoroszyt zawiera następujące makra:

    CopySheetToNewWorkbook - kopiuje bieżący arkusz roboczy do nowego skoroszytu.

    CopySelectedSheets - kopiuje wiele wybranych arkuszy do nowego skoroszytu.

    CopySheetToBeginningAnotherWorkbook - kopiuje aktywny arkusz na początek innego skoroszytu.

    CopySheetToEndAnotherWorkbook - kopiuje aktywny arkusz na koniec innego pliku Excela.

    CopySheetAndRename - duplikuje bieżący arkusz, zmienia jego nazwę na określoną przez użytkownika i umieszcza kopię za wszystkimi innymi arkuszami w bieżącym skoroszycie.

    CopySheetAndRenamePredefined - duplikuje aktywny arkusz, nadaje mu nazwę i umieszcza go na końcu bieżącego skoroszytu.

    CopySheetAndRenameByCell - tworzy kopię aktywnego arkusza i zmienia jego nazwę na podstawie wartości wybranej komórki.

    CopySheetAndRenameByCell2 - kopiuje aktywny arkusz i zmienia jego nazwę na podstawie wpisanego adresu komórki.

    CopySheetToClosedWorkbook - pozwala na skopiowanie arkusza do zamkniętego skoroszytu.

    CopySheetFromClosedWorkbook - umożliwia skopiowanie arkusza z innego pliku Excela bez jego otwierania.

    DuplicateSheetMultipleTimes - umożliwia wielokrotne powielanie arkusza w programie Excel.

    Aby uruchomić makro w swoim Excelu, wystarczy wykonać następujące czynności:

    1. Otwórz pobrany skoroszyt i włącz zawartość, jeśli zostanie wyświetlony monit.
    2. Otwórz własny skoroszyt i przejdź do arkusza, który chcesz skopiować.
    3. W swoim arkuszu naciśnij Alt + F8 , zaznacz interesujące Cię makro i kliknij Uruchom .

    Tak właśnie można zduplikować arkusz w Excelu za pomocą VBA. Dziękuję za przeczytanie i mam nadzieję, że zobaczymy się na naszym blogu za tydzień!

    Michael Brown jest oddanym entuzjastą technologii z pasją do upraszczania złożonych procesów za pomocą narzędzi programowych. Dzięki ponad dziesięcioletniemu doświadczeniu w branży technologicznej doskonalił swoje umiejętności w programach Microsoft Excel i Outlook, a także w Arkuszach i Dokumentach Google. Blog Michaela jest poświęcony dzieleniu się swoją wiedzą i doświadczeniem z innymi, dostarczając łatwych do zastosowania wskazówek i samouczków w celu poprawy produktywności i wydajności. Niezależnie od tego, czy jesteś doświadczonym profesjonalistą, czy początkującym, blog Michaela oferuje cenne spostrzeżenia i praktyczne porady dotyczące maksymalnego wykorzystania tych niezbędnych narzędzi programowych.