Я использую. NET Библиотека классов в Excel VBA. Оно работает. Я могу скомпилировать и зарегистрировать его на RegAsm. Используя Intercaces in. Net и такие атрибуты COM, как ([InterfaceType (ComInterfaceType.InterfaceIsIDispatch)]), обычно я вижу методы и объекты в VBA Intelisence, и я могу использовать его
Но ... Я бы хотел использовать сложную многоуровневую объектную область. Получить его некоторым методом, и у меня есть проблема со списком дочерних объектов как свойство родительского объекта.
Мой метод в C#
public object GetParentWithChildList()
{
var parent = new Parent
{
ParentName = "John",
Children = new List<object>
{
new Child {ChildName = "Tom"},
new Child {ChildName = "Brian"},
new Child {ChildName = "Eva"}
}.ToArray()
};
return parent;
}
public class Parent
{
public string ParentName { get; set; }
public object[] Children { get; set; }
}
public class Child
{
public string ChildName { get; set; }
}
объект [], я думаю, это Лучший способ вернуть список объектов для VBA / VB6 Это работает, когда у меня есть объект 1 уровня. например, я хотел бы вернуть только список объектов. object [] wokrs лучше, чем Child [] или List
А в VBA это работает только частично:
(основной объект вызывает LibDataAccess)
Sub GetParentWithChildListVbaTest()
Dim qda As LibDataAccess
Dim parent As parent
Set qda = New QgeDataAccess
Set parent = qda.GetParentWithChildList()
Debug.Print (parent.ParentName) ' Works OK - it returns John
Dim child As child
Set child = parent.Children(0) ' This line returns error: Wrong number of arguments or invalid property assignment
Debug.Print (parent.Children(0).ChildName)
End Sub
Мои вопросы: Как вернуть объект со списком подобъектов как свойство (подготовлено в. NET для VBA)? У меня неправильный код в C # или в VBA?