David wrote: > So I have a Visual Basic script in Excel which connects via com to > programX and retrieves data. The COM function takes 7 required > arguments. arg1-6 are set equal to values to determine what data to > fetch. arg7 is the variant in which the function returns the fetched > data. > ... > The end of which the variable 'data' is set to the value returned by > the com interface. > So when I call the function, I get: > > arg1 = ... > setting all arg# variables > ... > x1 = functionX(arg1, arg2, arg3, arg4, arg5, arg6) > > and x1 = the returned value > > When I try this in python, I get a type mismatch, for the apparent > reason that arg7 is not a variant. Of course, python being the > wonderful language it is, arg7 can be any type I want, whenever I want > to change it.... except there is no 'variant' type because of this. > >>> arg1 = .... > setting all arg# variables > ... > >>> x1 = win32com.client.GetObject("programX.activex.interface ") > >>> `x1` > '<COMObject programX.activex.interface>' > >>> x1.FunctionX(arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9, > arg10) > Traceback (most recent call last): > File "<interactive input>", line 1, in <module> > File "<COMObject programX.activex.interface >", line 2, in FunctionX > com_error: (-2147352571, 'Type mismatch.', None, 7) > >>> > > So I'm at a loss as to how to force passing arg7 as a variant type. > From what I gather in researching this, win32com.client is supposed to > handle typing automagically. Somehow I'm missing something.
If arg7 is the output argument, then you probably want: arg7 = x1.FunctionX(arg1, arg2, arg3, arg4, arg5, arg6, arg8, arg9, arg10) I'm not sure if it will handle functions where the output argument is not the final argument. -- Tim Roberts, [EMAIL PROTECTED] Providenza & Boekelheide, Inc. _______________________________________________ python-win32 mailing list python-win32@python.org http://mail.python.org/mailman/listinfo/python-win32