VBA를 사용하여 Excel에서 시트를 복제하는 방법

  • 이 공유
Michael Brown

튜토리얼은 셀 값을 기준으로 복사 및 이름 바꾸기, 여러 시트 복사, 활성 워크시트를 열지 않고 다른 파일로 복사 등 Excel에서 시트를 복제하기 위한 매크로 모음을 제공합니다.

Excel에서 시트를 수동으로 복사하는 것은 한두 번만 수행하면 매우 빠르고 간단합니다. 여러 시트를 여러 번 복제하는 것은 지루하고 시간이 많이 걸리는 작업입니다. 이 페이지에는 이 작업을 자동화하는 몇 가지 유용한 매크로가 있습니다.

    시트를 새 통합 문서로 복사하는 Excel VBA

    이 가장 간단한 한 줄 매크로는 다음을 수행합니다. 이름에서 알 수 있듯이 활성 시트를 새 통합 문서로 복사합니다.

    Public Sub CopySheetToNewWorkbook() activeSheet.Copy End Sub

    VBA를 사용하여 Excel에서 여러 시트 복사

    원하는 경우 활성 통합 문서에서 새 시트로 여러 시트를 복사하고 관심 있는 모든 워크시트를 선택하고 다음 매크로를 실행합니다.

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

    Excel VBA to copy sheet to another workbook

    복사된 시트를 삽입하려는 위치에 따라 다음 매크로 중 하나를 사용합니다.

    다른 통합 문서의 시작 부분에 시트 복사

    이 매크로는 활성 시트를 이전에 복사합니다. 대상 파일의 다른 모든 워크시트(이 예에서는 Book1 ). 다른 파일로 복사하려면 "Book1.xlsx"를 대상 통합 문서의 전체 이름으로 바꿉니다.

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

    다른 통합 문서의 끝으로 시트 복사

    이 코드 조각은 활성 워크시트를 복제하고 사본을 Book1 의 끝에 배치합니다. 다시 말하지만 "Book1.xlsx"를 대상 통합 문서의 이름으로 바꾸는 것을 잊지 마십시오.

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

    참고. 매크로가 작동하려면 대상 통합 문서가 하드 드라이브나 네트워크에 저장되어 있어야 합니다.

    선택한 통합 문서에 시트 복사

    현재 시트를 열려 있는 통합 문서에 복사하려면 ListBox 컨트롤( ListBox1 )과 두 개의 버튼이 있는 사용자 양식( UserForm1 )을 만들 수 있습니다.

    다음으로 양식을 두 번 클릭하고 코드 창에 아래 코드를 붙여넣습니다.

    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 End Sub

    사용자 정의 양식을 사용하면 다음 중 하나를 사용할 수 있습니다. 복사하는 매크로활성 시트를 선택한 통합 문서에 복사합니다.

    선택한 통합 문서의 시작 부분에 시트 복사 :

    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

    시트를 선택한 통합 문서의 끝 :

    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

    Excel에서 실행하면 매크로가 현재 열려 있는 모든 통합 문서 목록을 표시합니다. 필요한 항목을 선택하고 확인을 클릭합니다:

    시트를 복사하고 이름을 바꾸는 Excel 매크로

    Excel에서 시트를 복사하면 복제본에 Sheet1 (2) 와 같은 기본 형식의 이름입니다. 다음 매크로는 기본 이름을 수동으로 변경하는 수고를 덜 수 있습니다.

    이 코드는 활성 워크시트를 복제하고 사본의 이름을 "테스트 시트"로 지정합니다(원하는 다른 이름으로 자유롭게 바꿀 수 있음). , 복사된 시트를 현재 통합 문서의 끝에 배치합니다.

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

    사용자가 복사된 시트의 이름을 지정 하도록 하려면 다음 코드를 사용하십시오.

    Public Sub CopySheetAndRename() Dim newName As String On Error Resume Next newName = InputBox( "복사된 워크시트의 이름 입력" ) If newName "" Then activeSheet.Copy After:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    실행 시 매크로는 원하는 이름을 입력하고 확인을 누르는 다음 입력 상자가 표시됩니다.

    시트를 복사하고 셀 값을 기준으로 이름을 바꾸는 Excel 매크로

    In 경우에 따라 특정 셀 값(예: 열 머리글)을 사용하여 복사본의 이름을 지정하는 것이 더 편리할 수 있습니다. 이를 위해 위의 코드를 취하여 현재 선택된 셀 의 값을 입력란에 자동으로 입력하기만 하면 됩니다. 이전 예와 마찬가지로 복사본은 활성 통합 문서의 끝에 배치됩니다.

    가장 까다로운 부분은 실행하기 전에 사용자가 항상 올바른 셀을 선택하도록 하는 것입니다. 매크로 :)

    Public Sub CopySheetAndRenameByCell() Dim newName As String On Error Resume Next newName = InputBox( "복사된 워크시트의 이름 입력" , "워크시트 복사" , ActiveCell.Value) If newName "" Then activeSheet. 다음에 복사:=Worksheets(Sheets.Count) On Error Resume Next activeSheet.Name = newName End If End Sub

    또는 의 주소를 하드코딩할 수 있습니다.복사본의 이름을 지정해야 하는 cell , 아래 코드에서 셀 A1. 다른 셀을 기반으로 복사된 워크시트의 이름을 지정하려면 A1을 적절한 셀 참조로 바꿉니다.

    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

    워크시트를 닫힌 통합 문서에 복사하는 매크로

    이 매크로는 활성 시트를 닫힌 통합 문서의 끝에 복사합니다. 코드에 다른 통합 문서의 이름이 지정되어 있지 않습니다. 매크로는 표준 Windows 탐색기 창을 열고 대상 파일을 선택할 수 있도록 합니다.

    파일을 선택한 후 열기 를 클릭하면 매크로가 활성 시트를 복사하고 대상 통합 문서를 자동으로 닫습니다.

    Public Sub CopySheetToClosedWorkbook() Dim fileName Dim closedBook As Workbook Dim currentSheet As Worksheet fileName = Application.GetOpenFilename( "Excel 파일(*.xlsx), *.xlsx" ) if fileName False Then Application.ScreenUpdating = False set currentSheet = Application.activeSheet closedBook = Workbooks를 설정합니다. Open (fileName) currentSheet.Copy After:=closedBook.Sheets(closedBook.Worksheets.Count) closedBook. Close ( True ) Application.ScreenUpdating = True End If End Sub

    Excel VBA 없이 다른 통합 문서에서 시트를 복사하려면opening

    이 매크로를 사용하면 다른 Excel 파일을 열지 않고도 워크시트를 복사할 수 있습니다. 복사된 시트는 현재 통합 문서의 끝에 삽입됩니다.

    코드에서 몇 가지를 교체해야 합니다.

    • C:\Users\XXX\Documents\ Target_Book.xlsx는 시트를 복사하려는 통합 문서의 실제 경로와 이름으로 변경되어야 합니다.
    • Sheet1은 복사하려는 시트의 이름으로 대체되어야 합니다.
    Public Sub CopySheetFromClosedWorkbook() Dim sourceBook As Workbook Application.ScreenUpdating = False set sourceBook = Workbooks. Open ( "C:\Users\XXX\Documents\Target_Book.xlsx" ) sourceBook.Sheets( "Sheet1" ).Copy After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) sourceBook. Close Application.ScreenUpdating = True End Sub

    Excel VBA로 시트를 여러 번 복제

    예를 들어 동일한 데이터 세트에서 다른 수식을 테스트하기 위해 동일한 시트를 두 번 이상 복제해야 하는 경우가 있습니다. 이것은 다음 매크로를 사용하여 쉽게 수행할 수 있습니다.

    Public Sub DuplicateSheetMultipleTimes() Dim n As Integer On Error Resume Next n = InputBox( "얼마나 많은 활성 시트 복사본을 만드시겠습니까?" ) If n > = 1 Then For numtimes = 1 To n activeSheet.Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) Next End If End Sub

    원본 시트 열기, 매크로 실행, 활성 시트 사본 수 지정 확인 :

    VBA를 사용하여 Excel에서 시트를 복제하는 방법

    Excel에서 시트를 복사하려면 위의 매크로 중 하나를 사용하여 VBA 코드를 자신의 책에 삽입하거나 샘플 통합 문서에서 매크로를 실행할 수 있습니다.

    통합 문서에 매크로를 추가하는 방법

    통합 문서에서 코드를 작성하려면 다음 단계를 수행하십시오.

    1. 복사할 워크시트를 엽니다.
    2. Alt + F11을 눌러 Visual Basic Editor를 엽니다.
    3. 켜기 왼쪽 창에서 ThisWorkbook 을 마우스 오른쪽 버튼으로 클릭한 다음 삽입 > 모듈 을 클릭합니다.
    4. 코드 창에 코드를 붙여넣습니다.
    5. F5 키를 눌러 매크로를 실행합니다.

    자세한 단계별 지침은 Excel에 VBA 코드를 삽입하는 방법을 참조하세요.

    실행 방법 샘플 통합 문서의 매크로

    또는 샘플 통합 문서를 Duplicate Excel Sheets로 다운로드하고 여기에서 코드를 실행할 수 있습니다.

    샘플 통합 문서에는 다음 매크로가 포함되어 있습니다.

    CopySheetToNewWorkbook - Cu를 복사합니다. 워크시트를 새 통합 문서로 가져옵니다.

    CopySelectedSheets - 선택한 여러 시트를 새 통합 문서로 복사합니다.

    CopySheetToBeginningAnotherWorkbook - 활성 시트를 복사합니다. 다른 통합 문서의 시작 부분으로.

    CopySheetToEndAnotherWorkbook - 활성 시트를 다른 Excel 파일의 끝에 복사합니다.

    CopySheetAndRename - 현재 시트를 복제합니다. 시트,사용자가 지정한 대로 이름을 바꾸고 현재 통합 문서의 다른 모든 시트 뒤에 복사본을 넣습니다.

    CopySheetAndRenamePredefined - 활성 시트를 복제하고 복사본에 하드코딩된 이름을 지정하고 배치합니다. 현재 통합 문서의 끝에서.

    CopySheetAndRenameByCell - 활성 시트의 복사본을 만들고 선택한 셀 값을 기준으로 이름을 바꿉니다.

    CopySheetAndRenameByCell2 - 활성 시트를 복사하고 하드코딩된 셀 주소를 기반으로 이름을 바꿉니다.

    CopySheetToClosedWorkbook - 닫힌 통합 문서에 시트를 복사할 수 있습니다.

    CopySheetFromClosedWorkbook - 다른 Excel 파일을 열지 않고 시트를 복사할 수 있습니다.

    DuplicateSheetMultipleTimes - Excel에서 시트를 여러 번 복제할 수 있습니다.

    To Excel에서 매크로를 실행하려면 다음을 수행하십시오.

    1. 다운로드한 통합 문서를 열고 메시지가 표시되면 콘텐츠를 활성화합니다.
    2. 자신의 통합 문서를 열고 원하는 시트로 이동합니다. 카피.
    3. <1 7>워크시트에서 Alt + F8을 누르고 관심 있는 매크로를 선택한 다음 실행 을 클릭합니다.

    이렇게 복제할 수 있습니다. VBA를 사용하여 Excel의 시트. 읽어 주셔서 감사합니다. 다음 주 블로그에서 뵙겠습니다!

    Michael Brown은 소프트웨어 도구를 사용하여 복잡한 프로세스를 단순화하려는 열정을 가진 열성적인 기술 애호가입니다. 기술 산업에서 10년 이상의 경험을 쌓은 그는 Microsoft Excel 및 Outlook은 물론 Google 스프레드시트 및 문서 도구에 대한 기술을 연마했습니다. Michael의 블로그는 자신의 지식과 전문 지식을 다른 사람과 공유하는 데 전념하며 따라하기 쉬운 팁과 생산성 및 효율성 향상을 위한 자습서를 제공합니다. 노련한 전문가이든 초보자이든 Michael의 블로그는 이러한 필수 소프트웨어 도구를 최대한 활용하기 위한 귀중한 통찰력과 실용적인 조언을 제공합니다.