ok Tengo un par de clases .NET que quiero usar en VBA. Entonces debo registrarlos a través de COM y todo eso. Creo que tengo el registro COM resuelto (finalmente), pero ahora necesito ayuda con la sintaxis de cómo crear los objetos. Aquí hay un pseudo código que muestra lo que intento hacer.¿Cómo uso una clase .NET en VBA? Sintaxis ayuda!
EDIT: Se ha cambiado adjuntos objetos que devuelven un ArrayList en lugar de una lista
Las clases .NET ven así ...
public class ResourceManagment
{
public ResourceManagment()
{
// Default Constructor
}
public static List<RandomObject> AttachedObjects()
{
ArrayList list = new ArrayList();
return list;
}
}
public class RandomObject
{
//
public RandomObject(int someParam)
{
}
}
bien, así que esto es lo que me gustaría hacer en VBA (demostré en C#), pero no sé cómo ...
public class VBAClass
{
public void main()
{
ArrayList myList = ResourceManagment.AttachedObjects();
foreach(RandomObject x in myList)
{
// Do something with RandomObject x like list them in a Combobox
}
}
}
una cosa a destacar es que RandomObject no tiene un defau pública lt constructor. Por lo tanto, no puedo crear una instancia como Dim x As New RandomObject
. MSDN dice que no se puede crear un objeto que no tiene un constructor por defecto a través de COM pero todavía se puede utilizar el tipo de objeto si se devuelve por otro método ... Types must have a public default constructor to be instantiated through COM. Managed, public types are visible to COM. However, without a public default constructor (a constructor without arguments), COM clients cannot create an instance of the type. COM clients can still use the type if the type is instantiated in another way and the instance is returned to the COM client. You may include overloaded constructors that accept varying arguments for these types. However, constructors that accept arguments may only be called from managed (.NET) code.
Agregado: Aquí está mi intento en VB:
Dim count As Integer
count = 0
Dim myObj As New ResourceManagment
For Each RandomObject In myObj.AttachedObjects
count = count + 1
Next RandomObject
Bueno, realmente no estoy tratando de "crear" una instancia de RandomObject de VBA. Solo estoy tratando de trabajar con una lista de RandomObjects que se crea dentro de la clase ResourceManagement (managed .NET). – PICyourBrain
oh disculpas, leí mal la pregunta entonces. ¿quieres saber la sintaxis de vba para un ciclo? su primer problema será que ha devuelto una lista genérica al lado de la empresa, pero com no es compatible con los genéricos (debería haber recibido una advertencia del compilador comenzando por que esto era lo que intentaba hacer). ¿Puede usted? acceder a la clase ResourceManagement en el VBA? –
Sí. En el proyecto de VBA agregué una referencia al ensamblado de .NET.Luego en VBA puedo hacer esto "Dim myObj como nuevo ResourceManagment", pero ¿cómo puedo llamar al método AttachedObjects? – PICyourBrain