• ベストアンサー

ActiveXDLL関数の引数ByRefでの呼び出し

例えばActiveXDLL関数 Sub func1(ByRef lP1 As Long) lP1 = 11 End Sub があるとします。これをASP側で呼び出そうとすると ii = objXX.func1(lP1)’このように エラー タイプ Microsoft VBScript 実行時エラー (0x800A000D) 型が一致しません。: 'objXX.func1' /login.asp, line 156 と出てしまいます Sub func1(ByVal lP1 As Long) だと正常に動くようです。これだと意味がありませんが。 引数がByRefの時はASP側をどのように記述したらよいのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

出来ません。 http://support.microsoft.com/kb/197956/JA/ ActiveX DLL側をVariantにする必要があります。

lord_chan
質問者

補足

ありがとうございます。あとDLL側が Sub func2(ByRef P1()) ReDim P1(1) P1(1) = 2 P1(0) = 1 End Sub Sub func3(ByRef P1() As Collection) ReDim P1(1) As Collection P1(1).Add "1", "1" P1(0).Add "2", "1" End Sub のような場合、 redim sData(1) i = objSS.func2(sData(0)) i = objSS.func3(sData(0)) で使えませんか?

その他の回答 (1)

  • Kuppycat
  • ベストアンサー率50% (109/216)
回答No.2

ASPでは、変数は全部Variant型にしかなりません。 よって、受け側の型もVariant型になければなりません。 このばあい、ActiveXDLL関数を Sub func1(ByRef IP1 As Variant) または Sub func1(ByRef IP1) と指定してください。

lord_chan
質問者

補足

ありがとうございます。解決しました。

関連するQ&A

専門家に質問してみよう