Saltar al contenido

Verificar archivo abierto


Janlui

Recommended Posts

publicado

Hola, tengo un formulario donde puedo abrir archivos pero antes de abrirlo debo verificar que no esté abierto con anterioridad.

Estoy tratando de implementar : If FileAlreadyOpen(nomb_archivo) Then

Pero me manda error.

publicado
Hace 37 minutos , Janlui dijo:

Estoy tratando de implementar : If FileAlreadyOpen(nomb_archivo) Then

Pero me manda error.

Function esArchivoAbierto(rutaAlArchivo As String) As Boolean
  Dim archivo As Byte: archivo = FreeFile: On Error Resume Next
  Open rutaAlArchivo For Binary Access Read Write Lock Read Write As #archivo: Close #archivo
  esArchivoAbierto = Err.Number
End Function

OJO que no todos los tipos de archivo son bloqueados por el sistema para multiples aperturas (p.ej. *.txt y otros, y los *.pdf dependera de la aplicacion que los gestiona)

publicado
Hace 19 minutos , Janlui dijo:

Como invoco a la funcion dentro de mi codigo?

similar a la fraccion que expones en tu consulta inicial, solo cambia de esto:

Hace 1 hora, Janlui dijo:

If FileAlreadyOpen(nomb_archivo) Then

a esto:

If esArchivoAbierto(rutaAlArchivo) Then

 

publicado
Hace 4 horas, Janlui dijo:

Me manda este mensaje

1) la variable "FilePath" viene de la funcion Dir(...)

2) esa funcion devuelve (exclusivamente) "el nombre" del archivo (NO incluye "la ruta")

3) la funcion propuesta (esArchivoAbierto) => REQUIERE de ambos (la ruta Y el nombre)

publicado

Usa esta función:

Quote

Public Sub Test_IsFileOpen()

    Debug.Print CStr(IsFileOpen("R:\Test_File.doc"))

End Sub

Public Function IsFileOpen(ByVal filename As String) As Variant

    On Error Resume Next
    
    '--
    Dim FileNum As Integer
    FileNum = FreeFile()

    '--
    Open filename For Input Lock Read As #FileNum
    Close FileNum
    

    '--
    Dim errnum As Integer
    errnum = Err

    '--
    On Error GoTo 0
    Select Case errnum
      Case 0
        IsFileOpen = False
      Case 70
        IsFileOpen = True
      Case Else
        Error errnum
    End Select

End Function

 

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.