Access VBA: gestionar un error
He elaborado un código para que al modificar algún dato en un formulario se actualice automáticamente un informe en pdf en el drive.
Cuando el informe existe, el nuevo informe se sobrescribe sobre el antiguo. La intención es que este siempre actualizado.
El problema me surge, si al intentar sobrescribir el archivo antiguo, este está abierto, me da error 2501. Quiero solucionarlo provocando un mensaje de atención para advertir que se cierre el archivo para que pueda volver a intentarlo.
En parte me funciona bien, si no hay error todo va bien, si surge el error me lanza el mensaje y al cerrar el archivo lo reintenta. Pero el problema me surge cuando no cierro el archivo y doy a aceptar en el cuadro de mensaje (ya se que no tiene mucho sentido, pero me gustaría dejarlo completo), en este caso al volver a intentarlo, no me funciona el salto del error (On error goto).
Pensaba que podía ser porque el error anterior permanecía en memoria, por lo que he intentado añadir la línea Error. Clear, pero sigue sin funcionar.
Sub ExportarDrive_InformeCliente()
DoCmd.RunCommand acCmdSaveRecord
Var_Subcarpeta_Drive = DLookup("[Nombre]", "Comerciales", "Id_Comercial= '" & Var_Id_Comercial & "'")
Var_NombreCliente_Drive = DLookup("[Nombre Comercial]", "Tabla_Clientes", "Referencia=" & Cliente_Drive)
Var_Cliente_PuntoVenta = DLookup("[Punto de venta]", "Tabla_Clientes", "Referencia=" & Cliente_Drive)
Var_Activo_Drive = DLookup("[Activo]", "Tabla_Clientes", "Referencia=" & Cliente_Drive)
If Var_Cliente_PuntoVenta = True Then
Nombre_Fichero_Drive = Var_NombreCliente_Drive & " - Informe Clientes.pdf"
Ruta_Directorio_Drive = "C:\Users\Jon\Google Drive\Informes Comerciales\"
Ruta_Fichero_Drive = Ruta_Directorio_Drive & Var_Subcarpeta_Drive & "\" & Nombre_Fichero_Drive
DoCmd.SetWarnings False 'Desactiva el mensaje de ACCESS de que se van a agregar registros
If Dir(Ruta_Directorio_Drive, vbDirectory) = "" Then
ChDir Ruta_Directorio_Drive
MkDir Var_Subcarpeta_Drive
Else
End If
Reinicio:
On Error GoTo Advertencia
DoCmd.OutputTo acOutputReport, "Informe Clientes para comercial", "PDFFormat(*.pdf)", Ruta_Fichero_Drive, , "", 0, acExportQualityPrint
DoCmd.SetWarnings True 'Vuelve a activar los mensajesDim Var_Subcarpeta As String
GoTo Saltar_Advertencia
Advertencia:
RespuestaAdvertencia = MsgBox("El archivo está abierto, cierralo para continuar", 48, "Atención")
Err.Clear
GoTo Reinicio
Saltar_Advertencia:
Else
End If
End Sub
