Macro para garantizar abrir un archivo para escritura con un temporizador.

Tengo un libro de excel con datos que se van actualizando por 5 personas desde distintos puestos de trabajo.

Aunque el tiempo que la macro abre el archivo para insertar información es mínimo, corro el riesgo que 2 personas lo traten de actualizar casi al mismo tiempo y a una de ellas le de error.

Necesito una macro que pruebe si está abierto el libro, si no que lo abra (hasta ahí es fácil), Pero que si sí esta abierto, espere n segundos y lo vuelva a intentar por unas 3 vaces antes de marcar error.

Respuesta
1

Hice esto y parece que funciona.

Sub AbrirArchivo()
Dim f As Integer
Dim Abierto As Boolean
Dim nomb_archivo As String
nomb_archivo = "constantes.xlsx"
cuenta = 0
Abierto = True
f = FreeFile
On Error Resume Next
Do While Abierto = True And cuenta < 4
    Err.Clear
    Open ThisWorkbook.Path & "\" & nomb_archivo For Binary Access Read Write Lock Read Write As #f
    Close #f
    If Err.Number <> 0 Then
        cuenta = cuenta + 1
        Application.Wait Now + TimeValue("00:00:05") ' Espera 5 segundos
    Else
        Abierto = False
    End If
Loop
If cuenta > 3 Then
    MsgBox "Error #" & Str(Err.Number) & " – " & Err.Description
Else
    Workbooks.Open Filename:=ThisWorkbook.Path & "\" & nomb_archivo   

End If
On Error GoTo 0
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas