• 최초 작성일: 2025-01-25
  • 최종 수정일: 2026-09-27
  • 조회수: 35 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: VBA 파워 코딩 252회 - 파일 자동 삭제

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

이 메시지는 10초 후 자동으로 삭제됩니다

북미정상회담, 613 지방선거에 이어 러시아월드컵까지 말 그대로 정신없이 이어진 '수퍼위크(Super Week)'였습니다. 이제부터는 말의 '성찬(盛饌)'이 행동으로 이어질 수 있도록 지켜보고 관심을 가져야 할 때입니다.

'미션 임파서블' 같은 첩보 영화를 보면 주인공이 어떤 비밀 메시지를 읽었을 때, "이 메시지는 10초 후에 자동으로 삭제됩니다."라는 표시와 함께 메시지가 폐기되는 장면을 볼 수 있습니다. 이번 강좌에서는 이것과 비슷한 기능을 엑셀에서 할 수 있는 방법에 대해 알아보겠습니다(그렇다고 영화처럼 PC를 폭파(?)시키는 건 아니니 걱정 마세요.^^;).

특정한 엑셀 파일을 열고 지정한 시간이 경과(예: 10초 후)하거나 혹은 특정한 날짜(예: 2018년 12월 31일)가 지난 이후에 해당 파일을 열면 파일이 자동으로 삭제되도록 하는 겁니다.

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 대표 직강 1강 무료

🎁 파워툴스 마스터클래스 · 엑셀 바이브 코딩

AI에게 말로 지시해서 '나만의 엑셀 도구'를 만들고 리본에 장착합니다.

  • 코딩 지식 없이 시작 · 코드는 AI가 작성
  • 엑셀 리본에 내 탭과 버튼을 만들고 XLAM으로 공유
  • 1강 무료 수강 가능
수강 신청하기 강의 소개 보기

특정 시점에 파일을 자동으로 삭제하는 Code

핵심 요약: 지정한 시점에 엑셀 파일이 스스로 삭제되게 하기

Application.OnTime 메서드로 지정한 시간 뒤에 KillMe 프로시저를 실행하고, KillMe가 Kill 문으로 현재 통합 문서를 삭제합니다.

  • 시간 지정: Application.OnTime Now + TimeValue("00:00:10"), "KillMe"
  • 날짜 지정: If Date > #12/31/2018# Then KillMe
  • 삭제 동작: KillMe에서 Saved 설정 → 읽기 모드 접근 → Kill → Close
  • 자동 실행: auto_open(일반 모듈) 또는 Workbook_Open(Workbook 이벤트 모듈)

10초 후 파일 삭제하기

예제 파일을 열고 'Click Me' 버튼을 클릭하면 10초 후에 예제 파일(DelWorkbookDday.xlsm)이 삭제됩니다. 물론 파일이 열려 있는 상태라야겠죠? 버튼에 연결된 코드는 이렇습니다.

주의: 예제 파일을 PC에 저장한 다음 실행하세요

파일을 저장하지 않고 웹 상에서 오픈한 채 실행하면 제대로 작동하지 않습니다.

Sub DelWorkbook()
    Application.OnTime Now + TimeValue("00:00:10"), "KillMe"
End Sub

참고: VBA의 Kill 문으로 삭제한 파일은 휴지통으로 가지 않고 바로 삭제되어 되돌리기 어렵습니다. 실습은 반드시 복사본으로 하세요.

OnTime 메서드로 실행 시점 지정하기

OnTime 메서드를 이용하면 특정한 시점에 이벤트가 발생되도록 설정할 수 있습니다. 예를 들어 지금부터 1분 후에 특정한 프로시저가 실행되도록 하려면 다음과 같이 하면 됩니다.

Application.OnTime Now + TimeValue("00:01:00"), "프로시저명"

특정 날짜 이후에 파일을 열면 삭제하기

2018년 12월 31일 이후에 파일을 열었을 때 프로시저가 실행되도록 하려면 이렇게 합니다.

If Date > #12/31/2018# Then KillMe

참고: 원문 코드 수정

원문 코드는 If Date >= #6/15/2018# Then KillMe로, 본문에서 설명한 "2018년 12월 31일 이후"와 날짜가 달랐습니다. 설명에 맞게 #12/31/2018#을 기준으로 이후(>)인 경우에 실행되도록 바로잡았습니다. 실제로 사용할 때는 삭제하려는 날짜로 바꿔 쓰세요.

참고로 TimeValue는 시간 형식의 문자열 데이터를 시간으로 반환해 주는 함수입니다. 아래와 같이 하면 오후 2시 15분 10초가 MsgBox에 표시됩니다.

MsgBox TimeValue("2:15:10 PM")

KillMe 프로시저

이번에는 DelWorkbook 프로시저에서 호출한 하위 프로시저인 KillMe의 내용을 보겠습니다.

Sub KillMe()
    ThisWorkbook.Saved = True           ' 파일 수정 여부와 관계없이 저장된 것으로 인식
    ThisWorkbook.ChangeFileAccess xlReadOnly    ' 읽기 모드로 접근
    Kill ThisWorkbook.FullName          ' 현재 워크북 삭제
    ThisWorkbook.Close                  ' 파일 닫기
End Sub

파일을 열 때 자동으로 실행하려면

파일을 열 때 자동으로 실행되도록 하려면 auto_open이나 Workbook_Open 이벤트 프로시저에 DelWorkbook 프로시저의 내용을 작성하면 됩니다. 참고로 auto_open은 일반 모듈에, Workbook_Open은 Workbook 개체의 이벤트 모듈에 작성해야 한다는 점을 기억하시기 바랍니다.

정리 — 파일 자동 삭제 코드의 구성

구성 요소 역할
Application.OnTime 지정한 시점(예: 10초 후)에 프로시저를 실행
Date 함수 비교 특정 날짜 이후에 파일을 열었을 때만 KillMe 실행
KillMe Saved 설정, 읽기 모드 접근, Kill 문으로 삭제, Close로 닫기
auto_open / Workbook_Open 파일을 열 때 자동 실행 (auto_open은 일반 모듈, Workbook_Open은 Workbook 이벤트 모듈)

자주 묻는 질문 (FAQ)

Q1. 특정 시간이 지난 뒤에 프로시저를 실행하려면 어떻게 하나요?

Application.OnTime 메서드를 사용합니다. 예를 들어 지금부터 10초 뒤에 KillMe 프로시저를 실행하려면 Application.OnTime Now + TimeValue("00:00:10"), "KillMe"와 같이 작성합니다.

Q2. 파일을 열 때 자동으로 실행되게 하려면 어떻게 하나요?

auto_open 또는 Workbook_Open 이벤트 프로시저에 DelWorkbook 프로시저의 내용을 작성합니다. auto_open은 일반 모듈에, Workbook_Open은 Workbook 개체의 이벤트 모듈에 작성해야 합니다.

Q3. 예제 파일을 웹에서 열어 실행했더니 제대로 작동하지 않습니다.

파일을 저장하지 않고 웹 상에서 열어 둔 채 실행하면 제대로 작동하지 않습니다. 예제 파일을 PC에 저장한 다음 실행하세요.

마치며

OnTime 메서드 하나면 '이 메시지는 10초 후 자동으로 삭제됩니다' 같은 기능도 엑셀에서 만들 수 있습니다. 단, 삭제된 파일은 되돌리기 어려우니 복사본으로 연습하세요!
VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 정문 왼쪽에 있는 'VBA 강좌 - VBA 입문강좌'를 읽어보시면 이해가 빠릅니다.