출처: 회사에서 바로 통하는 엑셀 2003
김대리는 자신이 관리하고 있는 파일에 시트가 너무 많아서, 하나씩 새로운 파일로 내보내는 작업을 하려는데, 시트를 이동하고 저장하는 작업이 시간을 많이 잡아 먹는 것 같아 평소 자주 방문하는 카페에 질문을 올렸습니다. 한데 다음과 같은 코드를 사용하라는 답변을 얻었습니다.
Sub ExportSheets()
" 현재 파일의 시트를 모두 새로운 엑셀 파일로 내보내기 합니다.
Dim wkb As Workbook
Dim sht As Worksheet
Dim i As Integer
Application.ScreenUpdating = False
" 화면 갱신을 중단합니다.
Application.DisplayAlerts = False
" 메시지 호출을 중단합니다.
For Each sht In ThisWorkbook.Worksheets
" 현재 파일의 시트를 모두 내보냅니다.
Set wkb = Workbooks.Add(xlWBATWorksheet)
" 새로운 워크북을 생성합니다. (시트는 1개)
With wkb
sht.Copy .Sheets(1)
" 시트를 복사합니다.
.Sheets("sheet1").Delete
" 새로 생성된 워크북의 시트를 삭제합니다.
.Close SaveChanges:=True, Filename:=ThisWorkbook.Path & _
"\xlSheets_" & sht.Name & ".xls"
" 파일을 닫으면서 저장합니다. 파일명은 xlSheets_시트명.xls로
" 이 파일이 저장된 위치에 만들어집니다.
i = i + 1
End With
Next
MsgBox "총 " & i & " 개의 파일이 새로 생성되었습니다." & Chr(13) & Chr(13) & _
"저장위치는 "" & ThisWorkbook.Path & "" 입니다.", vbInformation, "시트 내보내기"
Application.DisplayAlerts = True
Application.ScreenUpdating = True
End Sub
한데 이 코드를 어떻게 사용해야 하는지 도무지 알 수 없습니다. 사용방법을 구체적으로 살펴보겠습니다. 웹에서 자신의 업무에 도움이 되는 코드를 받아 사용하는 경우에는 코드가 Sub으로 시작하는 것인지 Function으로 시작되는 것인지 구분해야 합니다.
Sub의 경우 어떤 동작을 실행해주는 메소드며, Function은 동작 후 결과값을 반환하여 주는 함수이기 때문입니다. 그러므로 Sub의 경우 Alt+F8(매크로 실행 단축키)를 통해서, Function 은 일반 수식을 작성하듯이 사용해야 합니다.
위의 코드를 자신의 파일에서 사용하길 바란다면 다음과 같은 절차를 따라하세요.
1. 코드를 사용할 엑셀 파일을 엽니다. 그리고 웹에서 얻은 코드를 복사(Ctrl + C) 합니다. 다시 엑셀로 돌아와 Alt+F11(Visual Basic Editor 호출 단축키)를 사용하거나, [도구]-[매크로]-[Visual Basic Editor] 메뉴를 선택하여 VBE(Visual Basic Editor) 창을 엽니다.
2. 열려진 VBE 창에서 [삽입]-[모듈] 메뉴를 선택하면, 왼쪽 빈 영역에 코드를 삽입할 수 있는 창이 열립니다.
3. 창에 위에서 복사한 코드를 붙여넣기(Ctrl+V)합니다.
4. VBE창을 닫고 다시 워크시트 화면으로 돌아간 다음 Alt+F8키를 누르면 해당 동작을 실행시킬 수 있는 매크로 실행 대화상자가 뜹니다. 붙여넣은 코드의 이름을 선택한 후 <실행> 버튼을 누시면 됩니다.