Cómo comprobar la existencia de un archivo

Tengo en Access 2007 una tabla con una relación de ficheros, de tal forma que cada registro conforma la ruta y el nombre de un fichero y lo que quisiera preguntar es si existe alguna forma de, mediante VBA, comprobar si todos los ficheros que componen esa tabla existen con sus respectivas direcciones y nombres, en mi disco duro.

En caso de existir esa forma ¿sería posible también obtener una relación de los ficheros que no existen en el disco duro?

1 Respuesta

Respuesta
1

Es muy fácil hacerlo usando la función Dir(). Te voy a indicar dos de las muchas formas que se me ocurren.

Como punto de partida, pongamos que tienes una tabla con un campo con la ruta, nombre y extensión del archivo (como entiendo que tienes), así:

La primera forma que se me ocurre, y la más fácil es crear en un módulo independiente esta función:

Public Function fncExisteArchivo(elArchivo As String) As Boolean
  If Dir(elArchivo) = "" Then
    fncExisteArchivo = False
  Else
    fncExisteArchivo = True
  End If
End Function

y luego usarla en una consulta:

En la consulta de la imagen, he puesto 0 como criterio para que la consulta devuelva solo los archivos que faltan en tu PC.

Segunda opción: si añades a tu tabla un campo de tipo Sí/No, llamado, por ejemplo, Existe, puedes poner en un formulario un botón (cmdComprobar, por ejemplo) con este código asociado:

Private Sub cmdComprobar_Click()
'TArchivos lo cambias por el nomobre de tu tabla
'Existe lo cambias por el nombre de tu campo Si/NO
Dim rst As DAO.Recordset
Set rst = CurrentDb.OpenRecordset("TArchivos")
If rst.RecordCount = 0 Then Exit Sub
rst.MoveFirst
Do Until rst.EOF
  rst.Edit
  If Dir(rst("Archivo")) = "" Then
    rst("Existe") = False
  Else
    rst("Existe") = True
  End If
  rst.Update
  rst.MoveNext
Loop
rst.Close
Set rst = Nothing
End Sub

Al pulsar el botón, revisará y actualizará todos los registros de la tabla, marcando o desmarcando el nuevo campo.

Con cualquiera de estas dos opciones, ya puedes mostrar los resultados en dónde quieras (un formulario, un cuadro de lista, un informe...).

Un saludo.


bit.ly/NkSvAcademy   /    bit.ly/ForoNkSv 

Muchas gracias Sveinbjorn El Rojo. Por curiosidad he probado con las 2 alternativas que me has facilitado y las 2 solucionan perfectamente el problema que tenía.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas