In VB6, see the CallByName function. It not exactly macro substitution but it allows you to call a method, get/set a property on an object
from vb help
CallByName Text1, "MousePointer", vbLet, vbCrosshair
Result = CallByName (Text1, "MousePointer", vbGet)
CallByName Text1, "Move", vbMethod, 100, 100
>Does anyone know how to do macro substitution or named expressions in VB without using the property let and property get procedures?