Te muestro la idea básica para un log. No es más que un fichero de texto en el que vas añadiendo líneas con los mensajes que te interesan.
Crea las variables globales en un módulo:
Código:
Public fs As Object
Public logFile as Object
En tu Sub Main, o en el primer sitio que te interese comenzar el log:
Código:
Set fs = CreateObject("Scripting.FileSystemObject")
Set logFile = fs.CreateTextFile(<ruta y nombre donde quieras tu fichero de log>, True)
En cada lugar en el que quieras agregar una línea al log:
Código:
Call logFile.WriteLine(format(time, "hh:mm:ss") & " <mensaje>")
DoEvents
Te recomiendo que en el mensaje pongas siempre el nombre de la función en la que estás. Por ejemplo:
Código:
Private Sub InicializarCosas(ByRef Parametro As Long)
Call logFile.WriteLine(format(time, "hh:mm:ss") & " InicializarCosas - Entrada. Parámetros: " & Parametro)
Call logFile.WriteLine(format(time, "hh:mm:ss") & " Apertura del recordset")
noseque.open recordset y tal
If <el recordset se ha abierto bien) Then
Call logFile.WriteLine(format(time, "hh:mm:ss") & " El recordset ha sido abierto con éxito")
Else
Call logFile.WriteLine(format(time, "hh:mm:ss") & " Fallo al abrir el recordset")
Call MsgBox("No ha funcionado =[ ")
Exit Sub
End If
' Aquí se hacen más cosas, que se informan en el log o no
Call logFile.WriteLine(format(time, "hh:mm:ss") & " InicializarCosas - Salida")
End Sub
Y en tu función de cierre del programa:
(asegúrate de que esta última se ejecuta, o puede que no se graben las últimas líneas).
Esto puedes complicarlo (o simplificarlo) tanto como quieras. Yo me construí un módulo de clase para ello y lo utilizo en la mayoría de mis "producciones"
El fichero resultante lo puedes abrir con el bloc de notas, ponle la extensión "txt" para ahorrarte trabajo
Y utiliza este método en los puntos de tu programa que sospeches que te están dando problemas. Puesto que estás escribiendo una cadena de texto, puedes concatenar cualquier cosa, desde el resultado de
err.Description hasta la posición del ratón en la pantalla. Y ten cuidado con lo que escribes en el log, que hay usuarios muy listos y pueden sacar partido si guardas cosas como cadenas de conexión o nombres de usuarios. O bien elimina todas las líneas para escribir en el log, o programa alguna forma de desactivarlo.
Cuéntanos qué tal, ¡suerte!