Microsoft Excel で動作する vb.net COM 相互運用に取り組んでおり、vb から vb.net に配列を渡す際に問題が発生しています。PointPairs
vb から設定する必要がある vb.net コードにプロパティがあり、2 次元配列を渡すのに問題があります。2D 配列でプロパティを明示的に設定することと、2 つの 1D 配列を Sub に渡して vb.net でプロパティを設定しようとしましたが、何もうまくいかないようです。
vb.net コード:
Public Property PointPairs() As Double(,)
Get
...
Return array
End Get
Set(ByVal Value(,) As Double)
...
End Set
End Property
Public Sub SetPointPairs(ByRef spline As Spline, ByRef xValues() As Double, _
ByRef yValues() As Double)
Dim Value(,) As Double
ReDim Value(1, UBound(xValues, 1))
For i As Integer = 0 To UBound(xValues, 1)
Value(0, i) = xValues(i)
Value(1, i) = yValues(i)
Next
spline.PointPairs = Value
End Sub
vb コード:
Dim spline1 As New Spline
Dim points(), xValues(), yValues() As Double
'read input from excel cells into points() array/add x and y values to respective arrays
spline1.PointPairs = points 'first method (doesn't work)
Call SetPointPairs(spline1, xValues, yValues) 'second method (doesn't work)
すべてがvb.netによって正しくエクスポートされており、プロパティ/サブ/関数がvbaのオブジェクトブラウザに表示されていますが、これら2つのアプローチで配列を渡そうとすると、エラーメッセージFunction or interfaces markes as restricted, or the function uses an automation type not supported in Visual Basic
またはSub or Function not defined
. 私も使用してみ<MarshalAs()>
ましたが、これまで使用したことがなく、vb と vb.net の間で配列を渡すために使用する方法に関するドキュメントがあまり見つかりません。
提案や解決策を事前に感謝します