2012-05-06 17 views
2

は、私は現在、VBAの結果としてオブジェクトの配列を渡すためにしようとしていますが、Excelは、次の不平を言っている:VB.NET配列をCOM経由でVBAに渡す方法は?

「制限付きとしてマークされた機能やインタフェースを、または関数は、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は私の質問は、一体はあなたが合格とVBAに.NETから配列を返すことになっている方法ですSystem.Objects文句を言っている:次のように

私の関数が宣言されています。また、ArrayRes()のデータは混合型で、文字列だけでなく、文字列や整数倍などを含むことができる配列の配列です。

私はVB.NETを選択しました。 VBAに簡単にマッピングすることができます。

最後に、System.ObjectとVB .NETでの配列が方法ではない、つまりコレクションやリストを介して別の方法を使用している場合は、それを開いてください。私はちょうどこのデータをVBAに取得する必要があります。また、必要に応じてC#に移動することもできます。任意のヘルプまたは勧告

固定
+0

をフォーマットして処理する機能を作成し必要な形式で波平に来るデータでしたこの関数を公開します。それは実際には 'のインターフェース宣言の一部であり、属性を使用していますか?もっとコードを投稿してください。 –

+0

コードを追加しました – Jamie

+0

Visual StudioのVB .NETの真のCOMクラスです。helloのpublic関数は正常に動作します。だから私はその機能が正しく機能していないと私には思わない。これらは呼び出すことができますが、これはデータ型をVBAからVB .NETに渡す際の問題であり、それらは下位レベルで異なっています。 私が必要とするのは、どのオブジェクトのデータ型を渡すことができるか、どのようにするかです。私は、マイクロソフトが、この製品には、配列やハッシュなどのデータ型を渡すことができるということを考えれば、このベアリングにsomehtigを公開すると思うだろう。 – Jamie

答えて

0

ため

おかげで、それは私が、私は本当の問題は方法あなたの中にある疑いがあるデータ

+0

機能は何ですか? – JackOrangeLantern

関連する問題