¿Cuál es la forma correcta de pasar una matriz de clases definidas por el usuario de vba a .net (específicamente C#) usando com-interop?Pase una matriz de vba a C# utilizando com-interop
Aquí está mi código C#. Si llamo a Method1 desde vba, está fallando con "Array o el tipo definido por el usuario esperado" o "La función usa un tipo de automatización no compatible con Visual Basic".
public class MyClass
{
public Method1(UserDefinedClass[] Parameters) { ... }
public Method2(Object Parameters) { ... }
}
He leído un poco sobre la clase MarshallAsAttribute. ¿Podría ser esta la pieza faltante en el código C#?
Aquí está el código VBA que estoy usando:
Dim udt As New UserDefinedClass
Dim myArray()
myArray(1) = udt
myClass.Method1(myArray)
myClass.Method2(myArray)
que íbamos a necesitar un poco más información aquí. ¿Podría agregar la definición de VBA del tipo y algún código que muestre que llama a la interfaz COM? – JaredPar
Agregado código vba. – Freddie
La declaración de matriz declara una matriz de variantes; debería declarar una matriz de UserDefinedClass, p. Ej. "Dim myArray (0 a 3) como UserDefinedClass" – Joe