Borrar un archivo en VBA

Usando VBA, ¿cómo puedo:

  1. comprobar si un archivo existe, y si es así
  2. borrarlo?
Solución

1.) Compruebe aquí. Básicamente haz esto:

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

Yo'lo dejaré a usted para averiguar los varios manejos de error necesarios pero estos son entre las cosas de manejo de error que yo'estaría considerando:

  • Comprobar si se pasa una cadena vacía.
  • Comprobar si una cadena contiene caracteres ilegales en un nombre de archivo/ruta

2.) Cómo eliminar un archivo. Mira esto Básicamente usa el comando Kill pero necesitas permitir la posibilidad de que un archivo sea de sólo lectura. Aquí'hay una función para usted:

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 If
End Sub

De nuevo, te dejaré el manejo de errores a ti y de nuevo estas son las cosas que yo consideraría:

  • ¿Debería comportarse de forma diferente para un directorio que para un archivo? ¿Debería un usuario tener que indicar explícitamente que quiere borrar un directorio?

  • ¿Quiere que el código restablezca automáticamente el atributo de sólo lectura o debe darse al usuario algún tipo de indicación de que el atributo de sólo lectura está establecido?


EDIT: Marcando esta respuesta como wiki de la comunidad para que cualquiera pueda modificarla si es necesario.

Comentarios (3)

Lo siguiente se puede utilizar para comprobar la existencia de un archivo, y luego borrarlo.

Dim aFile As String
aFile = "c:\file_to_delete.txt"
If Len(Dir$(aFile)) > 0 Then
     Kill aFile
End If 
Comentarios (2)

En VB su normalmente Dir para encontrar el directorio del archivo. Si no está en blanco, entonces existe y entonces usa Kill para deshacerse del archivo.

test = Dir(Filename)
If Not test = "" Then
    Kill (Filename)
End If
Comentarios (0)