Please Enable JavaScript!
Gon[ Enable JavaScript ]

엑셀 VBA 지정한 파일 삭제하기

엑셀(Excel)/VBA
반응형

VBA 를 이용해서 워크시트에서 직접 파일을 삭제할 수 있습니다. 이 기능을 사용하면 편리하고 효율적으로 작업이 가능합니다. 주의할 것은 이렇게 삭제한 파일은 휴지통에 들어가지 않습니다. 그러므로 중요한 파일의 백업은 먼저 수행하시기 바랍니다. 예제를 통해서 파일을 검색하고 파일 존재 유무까지 파악하는 방법까지 알려드리겠습니다.

 

 

구문

 

파일을 삭제하는 구문은 다음과 같습니다. 주의할 것은 파라미터로 입력할 파일 주소에 폴더는 안됩니다. 폴더는 파일로 인식하지 않습니다.

 

kill (PathName)
l  PathName : 삭제할 파일의 경로와 파일 이름을 지정합니다. 절대 경로 또는 상대 경로를 사용할 수 있습니다.

 

▼ 예를 들어 아래 소스처럼 Kill 함수의 파라미터인 PathName 에 폴더 주소를 입력해 보겠습니다. 폴더 전체의 내용을 한번에 삭제하고 싶었기 때문입니다.

 

▼ 결과는 53 런타임 오류가 발생하면서 작동하지 않았습니다. 폴더를 삭제하는 함수는 따로 있습니다. 그리고 폴더 내에 파일 전체는 정규식을 이용해서 삭제할 수 있습니다. 아래에서 다시 설명을 하겠습니다.

 

또 하나 주의할 것은 파일 경로에 역슬래쉬(\) 사용해서 정확하게 표현해야 합니다.

 

정규식 이용 폴더 내 모든 파일 삭제

 

▼ 다음은 특정 파일이 아닌 폴더 내에 모든 파일을 삭제하는 정규식을 알아보겠습니다. 와일드카드(*) 를 사용해서 모든 파일 이름과 확장자에 상관없이 일치하는 파일을 찾아 삭제하라는 의미입니다.

 

' 폴더 전체 파일 삭제
Kill "D:\files\*.*"
Kill "D:\files\*.xlsx"

 

 

폴더 삭제

 

▼ 다음은 폴더 삭제에 관한 함수를 알려드리겠습니다. 함수명은 RmDir 입니다. 파라미터로 폴더의 주소가 필요합니다.

 

' 폴더 삭제
RmDir "D:\files"

 

 

파일 존재 유무 확인 후 삭제하기

 

▼ 삭제할 파일 주소를 외부에서 제공받는 경우 유효성 검증이 필요합니다. 그래서 파일이 실제 존재하는지 여부를 판단할 필요가 있는 것입니다. 이 때 사용할 함수는 Dir 입니다. 파라미터로 확인할 파일의 경로와 이름을 지정합니다. 반환값으로 파일명을 받는데, 아무것도 없다면 if else end if 를 이용해서 파일이 없다는 메시지를 띄웁니다. 존재하지 않는 파일이라면 빈 문자열을 반환하기 때문에 Len 함수를 이용해서 문자열의 길이를 측정했습니다.

 

'' 파일 삭제
Sub delete_file()
 
    Dim DeleteFile As String
   
    DeleteFile = "D:\files\file01.xlsx"
 
    If Len(Dir(DeleteFile)) > 0 Then
        Kill DeleteFile
    Else
        MsgBox "파일이 없습니다.", vbOKOnly
    End If
   
End Sub

 

 

반응형
Posted by 녹두장군1
,