Spis treści
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 SubKopiowanie 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 SubExcel 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 SubKopiowanie 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 SubUwaga. 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 EndSubMają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 SubKopia 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 SubAby 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 SubPo 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 SubExcel 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ć.
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:
- Otwórz arkusz, który chcesz skopiować.
- Naciśnij Alt + F11, aby otworzyć edytor Visual Basic.
- W lewym panelu kliknij prawym przyciskiem myszy ThisWorkbook , a następnie kliknij Wkładka > Moduł .
- Wklejenie kodu w oknie Code.
- 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:
- Otwórz pobrany skoroszyt i włącz zawartość, jeśli zostanie wyświetlony monit.
- Otwórz własny skoroszyt i przejdź do arkusza, który chcesz skopiować.
- 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ń!