ユーザー定義のクラス型 ByRef の配列を Excel vba から vb.net に渡すにはどうすればよいですか? ここでdouble 配列を渡すことを扱った同様の投稿があり、UDT で同じ方法を使用しようとしましたが、機能しません。何か案は?
質問する
508 次
1 に答える
1
この質問でリンクした他の質問と非常によく似た自分の質問に(再び)答えて申し訳ありませんが、他の質問への回答とほぼ同じ方法でそれを達成できました。屈折パラメータの一部を変更する必要がありました。
vb.net コードでは、パラメーターをオブジェクトとして取り込み、そのオブジェクトの型 (object() 配列として認識される) を取得し、vb.net の次の関数を使用して、そのオブジェクト配列を目的のクラス配列に直接キャストします。
Friend Function ComObjectArrayToPointArray(ByVal comObject As Object) As Point()
Dim thisType As Type = comObject.GetType
Dim fibType As Type = Type.GetType("System.Object[]")
Dim fibArray(0) As Point
If thisType Is fibType Then
Dim args(0) As Object
Dim numEntries As Integer = CInt(thisType.InvokeMember("Length", BindingFlags.GetProperty, _
Nothing, comObject, Nothing))
ReDim fibArray(numEntries - 1)
For j As Integer = 0 To numEntries - 1
args(0) = j
fibArray(j) = DirectCast((thisType.InvokeMember("GetValue", BindingFlags.InvokeMethod, _
Nothing, comObject, args)), Point)
Next
End If
Return fibArray
End Function
于 2013-08-07T19:18:41.513 に答える