>Short answer - no, sorry
Which is correct. There is no way of an error handler knowing the proceedure name with the error unless you pass the name back.
If the proceedure already has an error handler, then when calling your error logging routine you can pass the name of the proceedure using the "Source" argument.
If it doesn't have an error handler, then the error handling routine in the calling proceedure, or somewhere up the stack, should kick in.
In order to pass back the needed information though, you would need to use the err.raise method. A simple example of this which gets added to every proceedure needing this would be like:
Sub MyProceedure1()
On Error goto MyErrorHandler
.
.
.
MyErrorHandler:
If err.number <>0 then
Err.Raise err.number, "MyProceedure1", err.description
End if
End Sub
This example would not change your current error handling logic at all, except for the fact that the added code "steps in between" and adds information, and then allows the error to carry on as before.
In doing it this way, the error is explicitly passed back to the calling proceedure, with the added, or if so desired, changed information, instead of VB moving up the stack until it finds an error handler, or not (crashes).