Hello.
There are no optional arguments in COM API of QuickOPC (which is what VBA gets to use). All arguments need to be specified. And, there aren't multiple overloads - for a given method name on an object, such as CallMethod, there is just one set of arguments (this is a general COM limitation).
So, you really need to specify all arguments to CallMethod. This means passing in an empty array if the UA method has no arguments. I cannot test it out right now, but on the Internet I have found that the Array() function might do it (can be given list of elements, but the list can be empty).
Can you please try out something like:
outputs = Client.CallMethod(..., ..., ..., Array(), Array())
The last part of your post is not clear to me. Are you saying that the methods that have arguments do work OK for the customer? In such case he needs to pass in the inputs values and typeCodes similarly to what you have written - so assuming that it works when the methods do have input arguments, I could imagine that passing this to a methods that does not have arguments could lead to an error, but I would expect that be an OPC service error, rather than what you have shown - because he is basically passing in the same as that he is passing elsewhere. Can you somehow elaborate/explain, or provide full examples?
Thank you