Vaciar o eliminar carpeta desde vba access

Al salir de un formulario, quiero eliminar una carpeta que he llenado anteriormente con una serie de ficheros.

Lo he intentado con el kill y también con rmdir, pero no me funciona. No hace nada. Ahora estoy usando esta función que he encontrado por la red, pero sigo con el mismo problema. No me sale ningún error, pero no elimina la carpeta.

El "Paso 2" de la función no la estoy usando

Public Function Borra(RuTa$)

Dim strRuta As String

'ruta de la carpeta a borrar..
strRuta = RuTa
If Right(strRuta, 1) <> "\" Then strRuta = strRuta & "\"
On Error Resume Next
'paso 1 - eliminamos contenido
'función KILL: para el borrado de una carpeta y los ficheros qeu hubiera en ella
Kill strRuta & "*.*" ' borra la totalidad de archivos
'paso 2 - borramos la carpeta
'función RmDir: para borrar una carpeta ya vacía de ficheros
'''RmDir strRuta 'eliminamos la carpeta (si está vacía!!)
On Error GoTo 0
End Function

3 respuestas

Respuesta
1

Con la herramientas de Access solo se pueden borrar carpetas vacías y Kill borra ficheros.

Conocida la carpeta con la función DIR (la primera vez con la ruta, las siguientes solo la llamada) se obtiene de forma recursiva el contenido.

Si DIR devuelve una cadena de texto, se utiliza para borrarlo (Kill sirve)

Si DIR devuelve una cadena vacía es que ya no tiene contenido (se puede eliminar la carpeta)

La excepción son los archivos protegidos por el sistema (pero esos no se borran de forma sencilla ni haciéndolo 'a mano')

Respuesta
1

No sé si he entendido bien la pregunta. Tengo la carpeta Acabar con una serie de archivos

Y en un formulario tengo un botón de comando

Cuando lo pulso

La carpeta acabar ha desaparecido, y el código del botón es

Private Sub Comando80_Click()
Kill "C:\users\gonza\documentos\acabar\*.*"
RmDir "C:\users\gonza\documentos\acabar\"
End Sub

Respuesta
1

Puede realizarlo con este código

Public Function eliminarCarpeta(ruta As String)
    Dim fso As Scripting.FileSystemObject
    Set fso = New Scripting.FileSystemObject
    fso.DeleteFolder ruta, True
End Function

Pude llamar la función desde cualquier parte, por ejemplo:

EliminarCarpeta "C:\MiCarpeta"

En donde C:\Micarpeta es la ruta de la carpeta a eliminar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas