엑셀 VBA에서 Kill 함수는 지정된 파일을 삭제하는 함수입니다.
즉, 파일을 삭제할 때 사용하며, 폴더는 삭제할 수 없음.
1. Kill 기본 문법
Kill "파일경로"
|
매개변수
|
설명
|
"파일경로"
|
삭제할 파일의 전체 경로
|
📌 파일이 존재하지 않으면 Run-time error '53': File not found 발생
📌 폴더는 삭제할 수 없음 → 폴더 삭제는 RmDir 또는 FileSystemObject.DeleteFolder 사용
📌 여러 개의 파일을 한 번에 삭제할 수도 있음 (와일드카드 * 사용 가능)
2. 특정 파일 삭제
Sub 파일삭제_기본()
Kill "C:\TestFolder\삭제할파일.xlsx"
MsgBox "파일이 삭제되었습니다!"
End Sub
|
📌 C:\TestFolder\삭제할파일.xlsx 파일 삭제
📌 파일이 존재하지 않으면 오류 발생 (Run-time error '53')
3. 파일이 존재하는지 확인 후 삭제 (Dir 활용)
Sub 파일존재확인후삭제()
Dim 파일경로 As String
파일경로 = "C:\TestFolder\삭제할파일.xlsx"
If Dir(파일경로) <> "" Then
Kill 파일경로
MsgBox "파일이 삭제되었습니다!"
Else
MsgBox "파일이 존재하지 않습니다!"
End If
End Sub
|
📌 파일이 존재할 경우에만 Kill 실행하여 삭제
4. 특정 확장자의 모든 파일 삭제 (*.확장자 사용)
Sub 특정확장자_파일삭제()
Dim 폴더경로 As String
폴더경로 = "C:\TestFolder\"
If Dir(폴더경로 & "*.txt") <> "" Then
Kill 폴더경로 & "*.txt"
MsgBox "모든 TXT 파일이 삭제되었습니다!"
Else
MsgBox "삭제할 TXT 파일이 없습니다!"
End If
End Sub
|
📌 특정 폴더 내 .txt 파일을 모두 삭제
📌 파일이 없을 경우 오류 방지
5. 특정 폴더 내 모든 파일 삭제
Sub 폴더내모든파일삭제()
Dim 폴더경로 As String
폴더경로 = "C:\TestFolder\"
If Dir(폴더경로 & "*.*") <> "" Then
Kill 폴더경로 & "*.*"
MsgBox "폴더 내 모든 파일이 삭제되었습니다!"
Else
MsgBox "폴더가 비어있거나 존재하지 않습니다!"
End If
End Sub
|
📌 폴더 내 모든 파일 삭제 (*.확장자 대신 *.* 사용)
6. 사용자 입력을 받아 파일 삭제 (InputBox 활용)
Sub 사용자입력파일삭제()
Dim 파일경로 As String
파일경로 = InputBox("삭제할 파일의 전체 경로를 입력하세요:")
If 파일경로 <> "" Then
If Dir(파일경로) <> "" Then
Kill 파일경로
MsgBox "파일이 삭제되었습니다!"
Else
MsgBox "파일이 존재하지 않습니다!"
End If
Else
MsgBox "파일 경로가 입력되지 않았습니다!"
End If
End Sub
|
📌 사용자가 직접 파일 경로를 입력하여 삭제
7. 폴더 내 특정 날짜 이전 파일 삭제 (FileDateTime 활용)
Sub 특정날짜이전파일삭제()
Dim 폴더경로 As String, 파일이름 As String
Dim 기준일 As Date
폴더경로 = "C:\TestFolder\"
기준일 = Date - 30 ' 30일 이전 파일 삭제
파일이름 = Dir(폴더경로 & "*.*") ' 폴더 내 모든 파일 검색
Do While 파일이름 <> ""
If FileDateTime(폴더경로 & 파일이름) < 기준일 Then
Kill 폴더경로 & 파일이름
End If
파일이름 = Dir ' 다음 파일 검색
Loop
MsgBox "30일 이전의 파일이 삭제되었습니다!"
End Sub
|
📌 폴더 내 파일 중 30일 이전 파일을 삭제
📌 파일의 마지막 수정 날짜를 확인 (FileDateTime 사용)
8. 읽기 전용 파일 삭제 (SetAttr 활용)
Sub 읽기전용파일삭제()
Dim 파일경로 As String
파일경로 = "C:\TestFolder\읽기전용파일.txt"
If Dir(파일경로) <> "" Then
SetAttr 파일경로, vbNormal ' 읽기 전용 해제
Kill 파일경로
MsgBox "읽기 전용 파일이 삭제되었습니다!"
Else
MsgBox "파일이 존재하지 않습니다!"
End If
End Sub
|
📌 읽기 전용 속성이 설정된 파일은 Kill로 삭제할 수 없음 → SetAttr로 읽기 전용 해제 후 삭제
9. 하위 폴더 및 파일까지 삭제 (FileSystemObject 활용)
Sub 폴더및파일삭제()
Dim fso As Object
Set fso = CreateObject("Scripting.FileSystemObject")
Dim 폴더경로 As String
폴더경로 = "C:\TestFolder"
If fso.FolderExists(폴더경로) Then
fso.DeleteFolder 폴더경로, True ' True = 강제 삭제
MsgBox "폴더 및 하위 파일이 삭제되었습니다!"
Else
MsgBox "폴더가 존재하지 않습니다!"
End If
End Sub
|
📌 폴더 내 모든 파일과 하위 폴더까지 삭제 (Kill로는 불가능, FileSystemObject.DeleteFolder 사용)
📌 Kill 사용 시 주의할 점
- 파일이 존재하지 않으면 Run-time error '53' 발생
- 해결 방법: If Dir(파일경로) <> "" Then Kill 파일경로
- 읽기 전용 파일은 Kill로 삭제 불가
- 해결 방법: SetAttr 파일경로, vbNormal로 속성 변경 후 삭제
- 폴더 자체는 삭제할 수 없음
- 해결 방법: RmDir 또는 FileSystemObject.DeleteFolder 사용
- 삭제한 파일은 복구할 수 없음
- 실행 전 신중하게 확인 필요!
📝 정리
기능
|
VBA 코드 (Kill 활용)
|
특정 파일 삭제
|
Kill "C:\폴더\파일.xlsx"
|
파일 존재 여부 확인 후 삭제
|
If Dir(파일경로) <> "" Then Kill 파일경로
|
특정 확장자의 모든 파일 삭제
|
Kill "C:\폴더\*.txt"
|
폴더 내 모든 파일 삭제
|
Kill "C:\폴더\*.*"
|
읽기 전용 파일 삭제
|
SetAttr 파일경로, vbNormal: Kill 파일경로
|
특정 날짜 이전 파일 삭제
|
If FileDateTime(파일경로) < Date - 30 Then Kill 파일경로
|
폴더 및 하위 파일 삭제
|
FileSystemObject.DeleteFolder 사용
|
🔥 VBA의 Kill을 활용하면 자동으로 파일 정리 및 삭제 작업을 수행할 수 있습니다! 🚀