Cómo eliminar archivos de una carpeta en VBA

Encontré un post con este código para eliminar todos los archivos de una carpeta. Pero no me funciona porque necesito declarar me parece. ¿Qué me falta? ¿Cómo sería el código completo?

Sub ejemplo()
'por luismondelo
Set fso = CreateObject("scripting.filesystemobject")
Set carpeta = fso.getfolder("C:\Users\Luis\Documents\curso de excel\luis\")
Set archivos = carpeta.Files
For Each fichero In archivos
x = x + 1
Next
x = x - 2
If x <> 0 Then
Msgbox "la caperta contiene " & x & " archivos, se procede a borrarlos"
For Each fichero In archivos
Kill fichero
Next
Else
MsgBox "la carpeta está vacia"
End If
End Sub

2 Respuestas

Respuesta
2

Cambia en esta parte

"C:\Users\Luis\Documents\curso de excel\luis\"

Por el nombre de tu carpeta, por ejemplo:

"C:\trabajo\libros\"

Prueba y me comentas.

Si te envía un error dime qué error te aparece y en qué línea de la macro se detiene.

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Perdón, Dante. Me expliqué mal. La ruta la tenía bien.
Encontré creo la solución. Decime, por favor, vos que más experimentado que yo si está bien:
Lo que hice fue, segun StackOverflow, ir a Herramientas/Referencias y Marcar  'Microsoft Scripting Runtime'.

Sin embargo, no funcionaba así que tuve que declarando distintas partes del código:
Dim fso As New FileSystemObject
Dim carpeta As Folder
Dim archivos As Files
Dim fichero As File
Dim x As Integer

El código completo quedó así:

Sub LimpiarCarpeta(RutaACarpeta As String)
'ELIMINAR TODOS LOS ARCHIVOS DE UNA CARPETA
'por luismondelo
Dim fso As New FileSystemObject
Dim carpeta As Folder
Dim archivos As Files
Dim fichero As File
Dim x As Integer

Set fso = CreateObject("Scripting.FileSystemObject")

Set carpeta = fso.getfolder(RutaACarpeta)
Set archivos = carpeta.Files
For Each fichero In archivos
x = x + 1
Next

'x = x - 2

If x <> 0 Then
MsgBox "la caperta contiene " & x & " archivos, se procede a borrarlos"
For Each fichero In archivos
Kill fichero
Next
Else
MsgBox "la carpeta está vacia"
End If
End Sub

Sub LimpiarCarpeta(RutaACarpeta As String)
'ELIMINAR TODOS LOS ARCHIVOS DE UNA CARPETA
'por luismondelo
Dim fso As New FileSystemObject
Dim carpeta As Folder
Dim archivos As Files
Dim fichero As File
Dim x As Integer
Set fso = CreateObject("Scripting.FileSystemObject")
Set carpeta = fso.getfolder(RutaACarpeta)
Set archivos = carpeta.Files
For Each fichero In archivos
x = x + 1
Next
'x = x - 2
If x <> 0 Then
MsgBox "la caperta contiene " & x & " archivos, se procede a borrarlos"
For Each fichero In archivos
Kill fichero
Next
Else
MsgBox "la carpeta está vacia"
End If
End Sub

Perdón, que me las mando al publicar. Recién aprendo a colocar código.

Prueba con la siguiente, no es necesario realizar ninguna declaración adicional.

Sub Eliminar_Archivos()
'Por.Dante Amor
    carpeta = "C:\trabajo\libros\"
    arch = Dir(carpeta & "*.*")
    Do While arch <> ""
        Kill carpeta & arch
        arch = Dir()
        n = n + 1
    Loop
    MsgBox "Archivos eliminados : " & n
End Sub

Si ya no tienes dudas apreciaría que cambiaras la valoración a la respuesta.

Perdón, Dante. Gracias por tu respuesta. Me pidió declarar "carpeta" y "arch". Entonces declaré carpeta pero no "arch" porque no sé de qué tipo sería. 

dim carpeta as string

Igualmente de la forma en que arranqué la pregunta funcionó. Usando las referencias y declarando también. 

dim arch as string

Más sobre variables:

Según su función ¿Cómo declarar variables?

Respuesta
1

No olvides que en "Referencias" del VBA debes activar "Microsoft Scripting Runtime "

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas