- 최초 작성일: 2000-09-05
- 최종 수정일: 2026-09-30
- 조회수: 20 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 작업중인 파일 삭제하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
이번 강좌에서 소개드리는 내용은 Excel 파일을 정리할 때 아주 유용하게 사용하실 수 있을 것입니다. 엑셀 파일을 열어본 다음 필요없는 파일이다 싶어서 삭제를 하려면 해당 파일을 반드시 닫은 다음에 삭제를 해야 하므로 좀 번거롭습니다(아니면 삭제할 파일 리스트를 메모해 두었다가 나중에 Excel을 종료한 다음 일일이 삭제를 해야 할 것입니다).
그런데 이 프로시저를 사용하면 파일을 열어둔 상태라 하더라도 필요없는 파일이라면 그 자리에서 바로 삭제할 수 있습니다.
작업중인 파일 삭제하기
핵심 요약: 작업중인 파일 삭제
활성 통합 문서의 경로와 이름을 저장해 둔 뒤 저장하지 않고 닫고, Kill 문으로 파일을 삭제합니다.
- 1단계: ActiveWorkbook을 변수에 담고 삭제 여부를 확인합니다.
- 2단계: 경로와 파일명을 strFile에 저장한 뒤 Close SaveChanges:=False로 닫습니다.
- 3단계: Kill strFile로 파일을 삭제하고, 오류는 kkk 라벨에서 처리합니다.
Step 1: 결과 미리 보기
일단 아래의 버튼을 누르세요. 현재 강좌파일이 있는 경로에 KillWorkbook.xls라는 파일이 하나 만들어 질 것입니다. 그러면 "도구-매크로-매크로" 메뉴를 선택한 다음, "KillActiveWorkbook" 프로시저를 선택합니다. 그러면 KillWorkbook.xls 파일이 활성화 된 상태임에도 불구하고 바로 삭제가 될 것입니다.
이번 시간에는 바로 이것을 만들어 보는 것입니다. 이 프로시저는 Personal.xls에 복사를 해두고 사용하시면 편리할 것입니다.
Kill 문으로 삭제한 파일은 휴지통을 거치지 않고 바로 삭제되므로 복구하기 어렵습니다. 필요한 파일이 삭제되지 않도록 확인 메시지에서 파일 이름을 꼭 확인하시기 바랍니다.
Step 2: 코드 살펴보기
잘 되시지요? 코드를 살펴보도록 하지요.
Sub KillActiveWorkbook()
Dim wrkBook As Workbook
Dim strFile As String
Dim intResult As Integer
Dim i As Integer
'//변수를 먼저 선언합니다.
Set wrkBook = ActiveWorkbook
On Error GoTo kkk
'//예전에 On Error Resume Next라는 것에 대해서는 소개를 해 드렸지요?
'//만약 에러가 발생하면 잔소리 말고 그 다음 구문을 실행하라는 것이었지요.
'//On Error GoTo kkk는 에러가 발생하면 kkk로 가라는 의미입니다.
intResult = MsgBox(wrkBook.Name & " 파일을 완전히 삭제할까요?", vbYesNo, "//Exceller")
'//Yes와 No, 두 개의 버튼을 가진 메시지 박스를 띄워서 사용자로 하여금 하나를
'//선택하게 한 다음, 그 결과값을 intResult 변수에 담아둡니다. 그러면 담아서 뭐에
'//쓸려고 하느냐? 아래 구문에서 vbYes이면, 즉 "예" 버튼이 클릭되었으면 그 아래
'//명령을 실행하고 "아니오" 버튼을 선택하면 그냥 빠져 나가는 것입니다.
If intResult = vbYes Then
Application.DisplayAlerts = False
strFile = wrkBook.Path & "\" & wrkBook.Name
'//wrkBook.Path는 현재 활성화된 워크북(파일)의 경로를 의미합니다. 따라서
'//strFile 변수에는 Active Workbook의 경로와 파일명이 저장이 되겠지요.
i = Len(strFile)
wrkBook.Close savechanges:=False
'//현재 워크북을 닫되 변경된 내용이 있어도 저장하지 말라는 의미입니다. 삭제를
'//할 파일인데 변경내용을 저장해봤자 소용이 없겠지요?
If i <> 0 Then Kill strFile
End If
kkk:
Application.DisplayAlerts = True
If Err <> 0 Then MsgBox Err.Description, , "Error 발생//Exceller"
'//"Err<>0"라는 것은 어떤 "에러가 발생했을 경우"를 의미합니다. 다시 말하자면
'//Err=0라는 것은 아무런 에러가 발생하지 않았다는 것을 의미하지요.
End Sub
마무리
오늘 설명드린 내용은 아주 짧은 코드이지만 상당히 유용한 기능이라고 생각됩니다. 많이 응용하시기 바랍니다. 그리고 응용을 하시다가 아주 그럴듯한 것을 만드시게 되면 꼭 Exceller에게 알려 주시기 바랍니다. 그래야 보다 많은 사람들이 공유를 할 수 있으니까 말입니다.
그럼…
정리 — 파일 삭제 핵심
| 구분 | 사용한 코드 | 역할 |
|---|---|---|
| 확인 | MsgBox(..., vbYesNo) | 삭제 여부 선택 |
| 경로 저장 | wrkBook.Path & "\" & wrkBook.Name | 삭제할 파일 경로 |
| 닫기 | wrkBook.Close savechanges:=False | 저장 없이 닫기 |
| 삭제 | Kill strFile | 파일 삭제 |
| 오류 처리 | On Error GoTo kkk / Err | 오류 메시지 표시 |
자주 묻는 질문 (FAQ)
Q1. 열려 있는 파일도 삭제할 수 있나요?
파일을 먼저 닫은 다음 Kill 문으로 삭제하는 방식이므로, 열어 둔 상태에서 실행해도 그 자리에서 삭제할 수 있습니다.
Q2. On Error GoTo kkk는 무슨 뜻인가요?
오류가 발생하면 kkk 라벨로 이동하라는 뜻입니다.
Q3. 어디에 저장해 두고 쓰면 편리한가요?
Personal.xls에 복사해 두고 사용하면 편리합니다.
마치며
짧은 코드이지만 파일을 정리할 때 아주 유용하게 쓸 수 있는 기능입니다.