Error 76 Error de acceso a la ruta o el archivo

Al salir de un formulario, al pinchar en un botón llamado "Salir", quiero que se borren las carpetas y ficheros que puedan existir en una determinada carpeta. Para ello uso RmDir "D:\MUSICA\LISTAS\". He probado a coger primero la dirección del fichero y luego ponerlo como un valor del RmDir NombreCarpeta, pero en ambos casos me sale el Error 76 Error de acceso a la ruta o el archivo.

También he intentado hacerlo con Kill, pero obtengo el mismo resultado.

Así es como lo escribo, lógicamente una u otra.

Vaciar = RutaCarpeta("Listas")
RmDir Vaciar
RmDir "D:\MUSICA\LISTAS\"

Por favor, me podéis decir como evitar este error.

3 respuestas

Respuesta
2

Pruebe con esta función

Public Function EliminarCarpeta(RutaCarpeta As String)
' Hacer referencia a Microsfot Scripting Runtime
On Error GoTo hay_error
   Dim fso As FileSystemObject, Unidades As Drives
   Set fso = New FileSystemObject
   Set Unidades = fso.Drives
   fso.DeleteFolder RutaCarpeta  ' Elimina la carpeta de esa ruta
hay_error_exit:
 Exit Function
hay_error:
   MsgBox Err.Number, vbCritical, "Error .."
   Set Unidades = Nothing
   Set fso = Nothing
   Resume hay_error_exit
End Function

En donde RutaCarpeta es el nombre de la carpeta a borrar.  Por ejemplo:

RutaCarpeta("D:\TodoExpertos\RibbonEPF")

Retira la carpeta RibbonEPF

¡Gracias! 

No está indicando correctamente la ruta o tiene algún archivo abierto mp3

Corrijo la llamada a la función que suministre

EliminarCarpeta("D:\MUSICA\LISTAS")

El error 76 es debido a que sobre la última barra invertida \

No puede darle error porque lo probé en mi PC

Respuesta
1

El problema no es de Access, RmDir no borra carpetas con contenido, primero has de vaciarla:

Public Function Borra(RuTa$)
If Dir(RuTa, vbDirectory) = "" Then Exit Function
Dim Fich$
Fich = Dir(RuTa)
Do
If Fich = "" Then Exit Do
Kill RuTa & Fich
Fich = Dir()
Loop
RmDir RuTa
End Function

La función primero verifica la existencia de la carpeta, si no la encuentra: finaliza la función

Crea una variable para obtener el fichero e inicia un bucle que los elimina uno a uno

(No lo he verificado con ficheros protegidos por el sistema u ocultos, aquí no tienen sentido)

Una vez vaciada la carpeta la elimina

¡Gracias! 

Muchas gracias a los tres por vuestra ayuda. He probado con las dos funciones y en una me da error 76 y en la otra 75.

He puesto la referencia al Scriptin Runtime, pero nada, sigo con el problema.

No se si el problema está en que lo que contiene esta carpeta son mas carpetas que contienen archivos .mp3.

En realidad lo que quiero es eliminar las carpetas que contienen los archivos mp3.

En mi propuesta no hay mención a ningún ' Scriptin Runtime', se hace en/desde Access con las herramientas que tiene desde su versión 1.0

Supongo que el error lo da si alguno de sus archivos esta abierto (o el programa que lo utiliza no lo libero) y en este punto el error es al 50% del programa y del usuario.

Un archivo mp3 en otra carpeta (con una sola nota, solo se trata de liberar a cualquier otro archivo) como canción final en esa sesión (o por defecto en todas las sesiones), debería resolver el problema de un forma limpia.

Respuesta
1

Jesús, la respuesta de Eperezfer es muy buena, simplemente acuérdate de activarlo en el Editor de VB

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas