본문 바로가기
업무 자동화

엑셀 시트별로 파일 각각 저장하기 (시트 분할 매크로)

by jungdabnote 2026. 2. 4.
반응형

업무를 하다 보면 한 파일 안에 수십 개의 시트가 생기곤 합니다. 이걸 팀별로 혹은 업체별로 하나씩 따로 저장해서 보내줘야 할 때, 일일이 '복사해서 새 통합 문서에 붙여넣기'를 하고 계셨나요?

시트가 3개라면 금방 하겠지만, 30개라면 이야기가 달라집니다. 오늘은 버튼 한 번으로 파일 안의 모든 시트를 각각 별개의 엑셀 파일로 저장해 주는 매크로를 소개합니다.

1. 시트 분할 자동화가 필요한 이유

가장 큰 이유는 시간 절약과 실수 방지입니다. 수작업으로 시트를 옮기다 보면 데이터가 누락되거나 파일 이름을 잘못 저장하는 경우가 생기기 마련이죠. 이 매크로를 사용하면 현재 파일의 시트 이름을 그대로 파일명으로 가져와서 지정된 폴더에 척척 쌓아줍니다.

2. 시트별 개별 저장 VBA 코드

아래 코드는 현재 열려 있는 엑셀 파일의 모든 시트를 돌면서, 시트 이름과 동일한 파일명으로 자동 저장해 줍니다.

Alt + F11을 눌러 편집기를 여신 뒤, **[삽입] - [모듈]**에 아래 내용을 복사해 주세요.

Sub SplitSheetsIntoFiles()
    Dim ws As Worksheet
    Dim DisplayStr As String
    Dim FolderPath As String
    
    ' 파일이 저장될 폴더를 현재 파일과 같은 위치로 지정합니다.
    FolderPath = ThisWorkbook.Path & "\"
    
    Application.ScreenUpdating = False
    Application.DisplayAlerts = False
    
    For Each ws In ThisWorkbook.Worksheets
        ' 각 시트를 새 통합 문서로 복사합니다.
        ws.Copy
        ' 시트 이름을 파일명으로 하여 저장합니다.
        ActiveWorkbook.SaveAs Filename:=FolderPath & ws.Name & ".xlsx"
        ' 저장된 파일을 닫습니다.
        ActiveWorkbook.Close
    Next ws
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
    
    MsgBox "모든 시트가 별개의 파일로 저장되었습니다. 저장 위치: " & FolderPath, vbInformation, "작업 완료"
End Sub

3. 실무 활용 팁

이 코드는 매크로가 실행되는 파일과 동일한 폴더에 결과물들을 저장합니다. 따라서 작업을 시작하기 전에 원본 파일을 특정 폴더에 넣어두고 실행하는 것이 관리하기 편합니다. 또한, 숨겨진 시트가 있다면 그 시트도 파일로 만들어지니 불필요한 시트는 미리 삭제하고 진행하세요.

반응형