Should we use object or variant ? What's the difference?
object
variant
If you are using Object, then clients must pass something that supports IUnknown or IDispatch - in short, the parameter must be an object. If you use variant, then clients can transfer whatever they want.
IUnknown
IDispatch