Saber si un archivo está en uso o abierto vb6 (Visual basic 6)

Bienvenidos a VerTutoriales.com, en esta ocasión os traigo una función para saber si un archivo está en uso o abierto, aunque visual basic no trae una función específica, nosotros nos creamos un truco, veamos.

Public Function ArchivoEnUso(ByVal sFileName As String) As Boolean
Dim filenum As Integer, errnum As Integer

On Error Resume Next ‘ Turn error checking off.
filenum = FreeFile() ‘ Get a free file number.
‘ Attempt to open the file and lock it.
Open sFileName For Input Lock Read As #filenum
Close filenum ‘ Close the file.
errnum = Err ‘ Save the error number that occurred.
On Error GoTo 0 ‘ Turn error checking back on.

‘ Check to see which error occurred.
Select Case errnum

‘ No error occurred.
‘ File is NOT already open by another user.
Case 0
ArchivoEnUso = False

‘ Error number for “Permission Denied.”
‘ File is already opened by another user.
Case 70
ArchivoEnUso = True

‘ Another error occurred.
Case Else
Error errnum
End Select

End Function

La función ArchivoEnUso, recibe el parámetro sFileName, que trae la ruta completa junto con el nombre de fichero, por ejemplo “c:\facturas\archivo-en-uso.pdf” este fichero se intentará abrir, si da error al abrir, quiere decir que está siendo usado y por tanto devolverá true (está usandose) en cualquier otro caso, devolverá false (no está usándose el archivo)

La función no es más, simplemente llamarla de la siguiente manera: ArchivoEnUso(“c:\directorio\archivo.pdf”) y nos devolverá true o false dependiendo de si está en uso o no.

Espero que os sirva!

 

Te puede interesar:

4 comentarios

  • Mauricio commented on 15 diciembre, 2014 Reply

    Excelente aporte, muchas gracias!!!

    • videotutoriales commented on 16 diciembre, 2014 Reply

      Gracias a tí por comentar este artículo de vb6 🙂

  • Ronald commented on 5 marzo, 2016 Reply

    Muchas gracias brother..un gran aporte.

    • Carlos Dk commented on 5 marzo, 2016 Reply

      Nada! agradecido por tu comentario 😉

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *