How to delete files using VBA, including files which may be readonly
Article contributed by Dave Rado and Doug Steele
You can use VBA Kill statement to delete files, as in:
Kill path & filename
However, the Kill statement can't delete readonly files, so, unless there's no chance that the file could be marked as readonly, you must first remove the readonly attribute from the file. You can do this as follows:
Dim KillFile  As String
KillFile = "c:\temp\temp.doc"
'Check that file exists
If Len(Dir$(KillFile)) > 0  
Then
    'First remove readonly attribute, if 
set
    SetAttr KillFile, vbNormal
    'Then delete the file
     Kill KillFile
End If
 
That's a bit unwieldy, so it's better to create a public macro that takes the path & filename as an argument, which you can then call whenever you like from other macros, as follows:
Public Sub  KillProperly(Killfile  As String)
    If Len(Dir$(Killfile)) > 0
 Then
        SetAttr KillFile, vbNormal
        Kill KillFile
    End If
End Sub
 
You could then call it from another macro like this:
KillProperly "c:\temp\temp.doc"
To delete all the files in a given directory:
'Loop through all the files in the directory by using Dir$ 
function
Dim  MyFile  As String
MyFile = Dir$("c:\temp\*.*")
Do While  MyFile <> ""
    KillProperly "c:\temp\" & MyFile
    'need to specify full path again 
because a file was deleted 1
    MyFile = Dir$("c:\temp\*.*")
Loop
 
To delete all the Word documents in a given directory, leaving other files alone:
Dim  MyFile  As String
MyFile = Dir$("c:\temp\*.doc")
Do While  MyFile <> ""
    KillProperly "c:\temp\" & MyFile
    MyFile = Dir$("c:\temp\*.doc")
Loop
 
__________________
- Alternatively you could read all the values into an array, and then delete all the files using a second loop. That would run slightly quicker, but unless it's a very large directory indeed, you wouldn't notice any difference.
