martes, 16 de octubre de 2018

VBA: Kill y RmDir para eliminar ficheros y carpetas

Hace algún tiempo publiqué la manera de crear carpetas en nuestro árbol de Windows con la función MkDir (ver aquí)

Hoy veremos la acción opuesta para eliminar carpetas y los ficheros que ellas contengan, para lo que emplearemos las funciones Kill y RmDir.

Tenemos la siguiente carpeta que deseamos eliminar y que contiene ciertos ficheros...

VBA: Kill y RmDir para eliminar ficheros y carpetas



Nuestro código VBA a incluir en un módulo estándar dentro del Editor de VBA es:

Sub Borrado()
Dim strRuta As String
'ruta de la carpeta a borrar..
strRuta = "E:\excelforo\000AAAExcelforo\Carpeta_a_borrar_1"

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
'Kill strRuta & "*.xl*"    ' borraría la totalidad de archivos solo de Excel

'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 Sub



Un alternativa a estas funciones de VBA es emplear el ScriptSystemObject y su método .DeleteFolder

Nuestro código VBA a incluir en un módulo estándar dentro del Editor de VBA es:

Sub Borrado_Carpeta()
'Elimina la carpeta sin necesidad de eliminar los ficheros en ella contenidos
Dim FSO As Object
Dim strRuta As String

'ruta de la carpeta a borrar..
strRuta = "E:\excelforo\000AAAExcelforo\Carpeta_a_borrar_2"

'quitamos la posible última barra \ de la ruta
If Right(strRuta, 1) = "\" Then MyPath = Left(strRuta, Len(strRuta) - 1)

'llamamos al script de FileSystem
Set FSO = CreateObject("Scripting.FileSystemObject")

'y acabamos borrando la carpeta y todo su contenido
FSO.DeleteFolder strRuta

End Sub



Con ambos métodos conseguimos nuestro objetivo de eliminar desde Excel carpetas y ficheros situados en cualquier parte de nuestro entorno de trabajo...

3 comentarios:

  1. Uff!!! Excelente!, si lo hubieras publicado antes!!!, me quebré un poco la cabeza con un sistema de DESBLOQUEO de password automatizado a EXCEL desde EXCEL donde requería limpiar una carpeta temporal, finalmente lo resolví con un comando de DOS RD /S /Q RUTA ejecutado obviamente con un Shell, me borró la carpeta junto con todas las subcarpetas y archivos de un sólo golpe. Estimadísimo Ismael, recibe un cordial saludo y respetos.

    ResponderEliminar
    Respuestas
    1. ;-)
      algo más simple con las funciones descritas...
      un saludo Manuel Alejandro

      Eliminar
  2. Buenísimo, muchas gracias!

    ResponderEliminar

Nota: solo los miembros de este blog pueden publicar comentarios.