Deleting a file in VBA Deleting a file in VBA vba vba

Deleting a file in VBA


1.) Check here. Basically do this:

Function FileExists(ByVal FileToTest As String) As Boolean   FileExists = (Dir(FileToTest) <> "")End Function

I'll leave it to you to figure out the various error handling needed but these are among the error handling things I'd be considering:

  • Check for an empty string being passed.
  • Check for a string containing characters illegal in a file name/path

2.) How To Delete a File. Look at this. Basically use the Kill command but you need to allow for the possibility of a file being read-only. Here's a function for you:

Sub DeleteFile(ByVal FileToDelete As String)   If FileExists(FileToDelete) Then 'See above                ' First remove readonly attribute, if set      SetAttr FileToDelete, vbNormal                ' Then delete the file      Kill FileToDelete   End IfEnd Sub

Again, I'll leave the error handling to you and again these are the things I'd consider:

  • Should this behave differently for a directory vs. a file? Should a user have to explicitly have to indicate they want to delete a directory?

  • Do you want the code to automatically reset the read-only attribute or should the user be given some sort of indication that the read-only attribute is set?


EDIT: Marking this answer as community wiki so anyone can modify it if need be.


An alternative way to code Brettski's answer, with which I otherwise agree entirely, might be

With New FileSystemObject    If .FileExists(yourFilePath) Then        .DeleteFile yourFilepath    End IfEnd With

Same effect but fewer (well, none at all) variable declarations.

The FileSystemObject is a really useful tool and well worth getting friendly with. Apart from anything else, for text file writing it can actually sometimes be faster than the legacy alternative, which may surprise a few people. (In my experience at least, YMMV).


I'll probably get flamed for this, but what is the point of testing for existence if you are just going to delete it? One of my major pet peeves is an app throwing an error dialog with something like "Could not delete file, it does not exist!"

On Error Resume NextaFile = "c:\file_to_delete.txt"Kill aFileOn Error Goto 0return Len(Dir$(aFile)) > 0 ' Make sure it actually got deleted.

If the file doesn't exist in the first place, mission accomplished!