現在、結果としてオブジェクトの配列を 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 に簡単にマップできると思ったからです。
最後に 1 つ、VB .NET の System.Object と Arrays がその方法でない場合、つまり、コレクションまたはリストを介した別の方法がある場合は、それを受け入れます。このデータを VBA に取り込む必要があります。また、必要に応じて C# に移行することもできます。
ヘルプや推奨事項をありがとう