ok Mam kilka klas .NET, które chcę użyć w VBA. Muszę zarejestrować je przez COM i tak dalej. Myślę, że mam zarejestrowaną rejestrację COM (wreszcie), ale teraz potrzebuję pomocy ze składnią jak tworzyć obiekty. Oto pseudo kod pokazujący, co próbuję zrobić.Jak korzystać z klasy .NET w VBA? Pomoc dotycząca składni!
Edycja: Zmieniono Załączone Przedmioty wrócić ArrayList zamiast listy
Klasy .NET wyglądać tak ...
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)
{
}
}
OK, więc to jest to, co chciałbym zrobić w VBA (co wykazano w C#), ale nie wiem jak ...
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
}
}
}
Jedną rzeczą jest, aby pamiętać, że RandomObject nie posiada publicznego defau lt konstruktor. Nie mogę więc utworzyć takiej instancji, takiej jak Dim x As New RandomObject
. MSDN mówi, że nie można utworzyć wystąpienia obiektu, który nie ma domyślnego konstruktora poprzez COM, ale nadal można użyć typu obiektu, jeśli jest ona zwracana inną metodą ... 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.
Dodano: Oto moja próba w VB:
Dim count As Integer
count = 0
Dim myObj As New ResourceManagment
For Each RandomObject In myObj.AttachedObjects
count = count + 1
Next RandomObject
Cóż, tak naprawdę nie próbuję "stworzyć" instancji RandomObject z VBA. Po prostu próbuję pracować z listą obiektów RandomObjects, które są tworzone w klasie ResourceManagement (zarządzane .NET). – PICyourBrain
o przepraszam, błędnie przeczytałem pytanie. chcesz znać składnię vba dla pętli? twoim pierwszym problemem będzie to, że zwróciłeś ogólną listę do strony com, ale com nie obsługuje generycznych (powinieneś mieć ostrzeżenie kompilatora, zaczynając od tego, co próbujesz zrobić). Czy jesteś w stanie uzyskać dostęp do klasy ResourceManagement w VBA? –
Tak. W projekcie VBA dodałem odwołanie do zestawu .NET.Następnie w VBA mogę zrobić to "Dim myObj jako nowy menedżer zasobów", ale w jaki sposób wywołać metodę AttachedObjects. – PICyourBrain