"The call method calls the Invoke method on the IDispatch COM interface of the COM object to invoke the method/property in question. The return value of the IDispatch::Invoke method is also the return value of the call method, thus the Win32 SDK documentation for possible return values applies."
IDispatch::Invoke возвращает HRESULT, таким образом, call тоже должен возвращать HRESULT, а вместо этого выкидывает исключение. Как получить HRESULT?