none
Recuperar el nombre de método que se está ejecutando en VBA en tiempo de ejecución. RRS feed

  • Pregunta

  • Hola, soy desarrollador en VBA desde hace muchos años.

    He intentado por varios años recuperar de forma automática y en tiempo de ejecución, el nombre del método (Sub, Function, Property) que se está ejecutando, para que cuando ocurra algún error, se muestre el nombre del método en el MsgBox que muestra la descripción del error.

    En la Web he encontrado el siguiente código: 

    Debug.Print VBE.ActiveCodePane.CodeModule.ProcOfLine(VBE.ActiveCodePane.TopLine, vbext_pk_Proc)

    Sin embargo, no devuelve el nombre del método ya que la instrucción "TopLine" devuelve 1, qué es el número de la primera línea de código del módulo.

    No se si se pueda implementar en VBA lo que deseo hacer, pero si se pudiera, les agradeceria mucho su ayuda o sugerencias.

    Gracias y saludos...

    miércoles, 12 de septiembre de 2018 15:17

Todas las respuestas

  • Hola! 

    por lo que yo sé no es posible hacerlo con VBA.


    Saludos a todos desde Huelva Emilio http://www.mvp-access.es/emilio/

    • Propuesto como respuesta Jorge TurradoMVP miércoles, 12 de septiembre de 2018 16:39
    miércoles, 12 de septiembre de 2018 16:32
  • Hola

    Lo único que se me ocurre, es que declares una  variable pública tipo string en la cual introduzcas el nombre del procedimiento en el inicio del mismo, y que la muestres en un msgbox de gestión de errores.

    También podrías crearte una tabla de log e ir creando un log por pasos. En el momento que se produzca un error, guardas en una tabla de errores el último log. Para ello, te creas un procedimiento que guarde todos los datos del error: último paso guardado, procedimiento, número de error y descripción, procedimiento donde se ha creado, etc...

    Suerte,


    José Mª Fueyo

    martes, 18 de septiembre de 2018 15:13
  • Lo que yo he hecho en SQL Server: un procedimiento almacenado en el que paso el nombre del procedimiento, el texto del último log antes del error, y el texto del error. 

    Dentro de un TRY...CATCH hago una llamada para ejecutar el procedimiento. Así localizo el punto más cercano a donde se ha producido el error, que procedimiento ha tenido el error y cual ha sido éste.

    En VBA crea una tabla de log y una de errores. Y un procedimiento SUB que haga algo muy similar a lo que hago yo en SQL Server. En la etiqueta donde gestionas los errores, llámalo y guarda toda la información. En la tabla de log guardas que se ha producido un error. 

    Saludos,


    José Mª Fueyo

    lunes, 24 de septiembre de 2018 8:53