В настоящее время я пытаюсь передать массив объектов в VBA, но Excel жалуется на следующее:
«Функция или интерфейс помечены как ограниченные, или функция использует тип автоматизации, не поддерживаемый в Visual Basic».
Я посмотрел в Интернете и видел похожие проблемы, но не тот, который я пытаюсь сделать.
Моя функция объявлена следующим образом:
<ComClass(Class1.ClassId, Class1.InterfaceId, Class1.EventsId)> _
Public Class Class1
#Region "COM GUIDs"
...
#End Region
Public Sub New()
MyBase.New()
End Sub
Private Const AT_HOME As Boolean = True
Public Function hello() As System.String()
Dim a(10) As String
a(0) = "hello"
a(1) = "Goodbye"
Return a
End Function
Public Function CallArray(ByVal serviceName As String, _
ByVal effectiveDate As String,
ByVal serviceParams() As System.Object,
ByRef ArrayRes() As System.Object) As System.Boolean
VBA жалуется на System.Objects, мой вопрос в том, как, черт возьми, вы должны передавать и возвращать массивы из .NET в VBA. Кроме того, данные, которые будут находиться в ArrayRes(), имеют смешанный тип, это не просто строки и т. д., это массив массивов, которые могут содержать строки, целые числа, удвоенные и т. д.
Я выбрал VB .NET, потому что полагал, что его будет проще сопоставить с VBA.
И последнее, если System.Object и массивы в VB .NET не подходят, т.е. может быть есть другой способ через коллекции или списки, то я открыт для этого. Мне просто нужно получить эти данные в VBA. Также я мог бы перейти на C #, если это будет необходимо.
Спасибо за любую помощь или рекомендации