콘텐츠로 건너뛰기

엑셀 시트만 파일로 저장 하기, 시트 여러개 자동 저장 매크로도 있어요~

    들어가며

    엑셀로 하는 작업은 언제나 신납(?)니다. 엑셀 작업을 하다보면 여러개의 시트가 종합되어있는 통합 문서를 다룰 때가 있죠. 이런 시트를 다루다 보면 개별 시트만 파일로 저장해야 하는 경우도 종종 생깁니다. 이럴 때 활용 할 수 있는 엑셀 시트만 따로 저장하는 방법에 대해 알아보겠습니다.

    엑셀 시트만 개별 파일로 저장하는 방법은 한번만 배워두면 간단하게 써먹을 수 있을 정도록 간단합니다. 엑셀을 조금 다뤄봤다는 분들이면 아마 이미 알고 계시는 기능일 텐데요, 시트 이동/복사 기능을 이용해 새 통합 문서로 이동하여 저장하는 방법이죠. 단발성 작업이라면 이 방법이 가장 효율적이에요.

    통합 문서를 시트만큼 복사해서 불필요 시트만 삭제하고 저장을 하는 분도 있었다네요… 😲😲

    엑셀 초보자가 아니라면 이런 방법을 찾아 오신게 아닐수도 있어요. “통합문서에 있는 모든 시트를 다 쪼개려면 저걸 계속 해야 하는거야?” 하는 불만이 생기게 되죠. 근데 사실 맞아요… 엑셀에서 그 일을 해내려면 그걸 반복 하는 것 만이 답이에요…

    하지만!! 엑셀엔 그 기능을 자동화할 수 있는 VBA가 존재하죠. 아래쪽에 가시면 이러한 반복작업을 편하게 할 수 있는 방법도 소개해 드리니 한번 쭉~ 살펴보세요.

    새 통합 문서로 복사하여 시트만 파일로 저장하기

    그렇다면 먼저 시트를 파일로 저장하는 기본적인 방법에 대해 알아볼께요.위에서 간단하게 설명했듯 시트 이동/복사 기능을 이용한 방법에 대해 알아보겠습니다.

    1. 개별 파일로 저장하고 싶은 시트를 선택 후 우클릭 한다.
    2. 대상 통합 문서를 (새 통합 문서)로 지정한다.
    3. 아래쪽 ‘복사본 만들기’를 체크 하고 확인을 눌러준다.
    4. 새로 생성된 통합문서를 저장한다.

    위의 순서로 개별 시트를 저장할 수 있습니다. 인트로 부분에서 소개해드린 누군가의 방법을 사용하는거랑… 비슷한 노동일 것 같죠…? 시트가 많지만 않다면요.

    VBA를 이용해 반복 작업 자동화 하기

    이번 섹터부턴 위의 과정을 반복해야하는 분들을 위해 소개해드릴 자동화 방법입니다. 엑셀에선 VBA 기능을 이용해 원하는 함수나 기능들을 만들어 사용할 수도 있습니다. 여기선 그 방법을 사용해 위에서 했던 행동을 반복해주는 방법을 사용해 볼 꺼에요.

    VBA란? 위키피디아에서 조금 더 알아보기

    아래 방법을 적용하시려면 그 전에 엑셀에서 VBA를 사용하는 방법에 대해 알아보셔야 합니다. 아래코드를 복사해서 붙여넣고 사용하면 되지만, 그럼에도 코드를 다루는게 낯설다 하시는 분들은 다음 섹션인 추가기능 사용하기에서 제가 사전에 작업해 둔 매크로 파일을 추가하는 방법으로 사용하시면 될 것 같아요. 먼저 VBA로 해당 작업을 반복하는 매크로를 생성해 볼까요?

    VBA코드 붙여 넣는 방법을 모르신다면?

    기존 글 “모듈 생성하여 새로운 코드 작성하기” 섹션을 참고해주세요.

    열려있는 통합 문서의 모든 시트를 개별 파일로 저장하는 VBA 코드

    Sub SaveSheetsAsIndividualFiles()
        Dim ws As Worksheet
        Dim wb As Workbook
        Dim newWb As Workbook
        Dim filePath As String
        Dim fileName As String
        
        ' 현재 활성화된 엑셀 파일 경로를 가져옵니다.
        filePath = ThisWorkbook.Path
        
        ' 시트별로 반복합니다.
        For Each ws In ThisWorkbook.Sheets
            ' 새로운 워크북을 생성합니다.
            Set newWb = Workbooks.Add
            ' 새 워크북에 기존 시트를 복사합니다.
            ws.Copy Before:=newWb.Sheets(1)
            
            ' 복사된 시트가 있는 새 워크북에서 기본 시트를 삭제합니다.
            Application.DisplayAlerts = False
            newWb.Sheets("Sheet1").Delete
            Application.DisplayAlerts = True
            
            ' 파일 이름을 시트 이름으로 설정합니다.
            fileName = filePath & "\" & ws.Name & ".xlsx"
            
            ' 새 워크북을 파일로 저장합니다.
            newWb.SaveAs fileName:=fileName, FileFormat:=xlOpenXMLWorkbook
            
            ' 새 워크북을 닫습니다.
            newWb.Close SaveChanges:=False
        Next ws
        
        MsgBox "모든 시트를 개별 파일로 저장했습니다. know-bee.com", vbInformation
    End Sub
    

    위의 코드를 복사하여 엑셀 VBA코드에 삽입하고 매크로를 실행하시면 개별 파일을 자동으로 저장하실 수 있어요. 파일이 많다면 위의 코드를 이용해 자동으로 작업을 진행 하는게 더 수월할 것 같습니다.

    통합문서 시트 개별로 저장하기, 추가기능 사용

    이 방법도 VBA를 이용하는 방법 이긴 하지만 코드를 다루거나 하는게 낯선 분들을 위해 제가 사전에 작업해둔 매크로 코드를 엑셀 추가 기능으로 추가하여 사용하는 방법이에요.

    아래 추가기능 파일을 다운 받아주시고 엑셀 추가기능에 추가, 리본메뉴에 ‘SaveSheetAsindividualFiles’를 찾아서 추가 한 뒤 사용하실 수 있습니다.

    시트 개별 파일로 저장하기 추가 기능 다운받기

    위에서 보여드린 코드와 달리 아래 추가 기능은 일부 기능들이 추가되어 있습니다. 코드를 다루지 않을 분들이라면 좀 더 편리하게 사용하셔야 하니까요. 이 매크로도 파일을 받아 적용하시면 코드를 확인하실 수 있어요.

    • 현재 활성화 되어 있는 파일의 모든 시트를 해당 시트의 이름으로 각각의 파일로 저장함
    • 매크로 실행 시 저장할 위치를 지정
    • 해당 경로에 동일한 파일이 있다면 자동으로 삭제
    • OneDrive동기화 중인 폴더의 경우 같은 경로에 같은 파일을 재 작업 하게되면 오류가 발생할 수 있습니다. 동일한 폴더에 작업을 반복할 때 오류가 발생한다면 해당 폴더를 지우고 새로운 폴더를 생성하여 작업하거나, 다른 경로에 작업 해 주세요.

    추가 기능 설치 하는 방법

    마무리

    엑셀파일의 시트를 개별 파일로 저장하는 방법에 대해 알아보았는데요. 엑셀 자체적으로 시트를 분리하는 기능이 없을줄이야… 저는 이런 작업을 하지 않아서 생각을 못해봤네요. 대부분은 단발적인 작업이라 처음에 소개해드린 방법을 직접 수행하시면 되겠지만 여러개의 시트를 개별로 저장하는 작업은 고된 반복 작업 이잖아요? 이런 건 잘 하는 기계 시키자구요. 이번 글이 수많은 엑셀 작업자들을 구제하길 바라며..

    엑셀관련 글들은 대부분 제가 아는 엑셀 뉴비의 고민을 들으며 작성하는 글이에요. 이분의 고민이 접수된다면 이 고민부터 해결하며 글을 써 나갈 예정이라 대중적이지 않은 기능들이 많이 소개될 수도 있을 듯 합니다.