1

現在、結果としてオブジェクトの配列を 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# に移行することもできます。

ヘルプや推奨事項をありがとう

4

1 に答える 1

0

入ってくるデータが必要な形式ではなかったのを修正したので、データをフォーマットして処理する関数を作成しました

于 2012-05-07T19:24:21.050 に答える