Syntax for CallByName
Code:
Result = CallByName(Object, ProcedureName, CallType, Arguments())
You can only invoke methods and properties of the object.
IF you want this to do more 'regular' routines, then you need to write a class module that does those 'regular' kinds of subroutines.

In other words, move your subs off into a class module. (.CLS)