- PR -

VBAからC#で作成したDLLのメソッドをコールすると実行時エラーになる

1
投稿者投稿内容
Hamajin
会議室デビュー日: 2005/01/08
投稿数: 2
投稿日時: 2005-01-08 20:09
C#で作成したDLLのメソッドを、ExcelのVBAからコールしたいのですが、
メソッドコール後、"オートメーションエラーです"
とのメッセージが表示されてしまうメソッドがあります。

発生したエラーを調べたところ、-2146233079となっており、
VisualStudioのエラー検索にも引っかかりませんでした。

トレースしてログを吐いてみたところ、メソッド内の処理は正常に
行われて、returnまで行っているようなのですが・・・

下記がそのメソッドのパラメータと戻り値なのですが、
C#でref, outパラメータを指定すると、
VBAからコールし、復帰することはできないのでしょうか?

/** このメソッドはコール後、正常に復帰する **/
public int AAA(byte[] a, int b, MyStruct[] c) // MyStructは定義した構造体
{
<処理>
}

/** このメソッドはコール後、オートメーションエラー **/
public int BBB(byte[] a, out int b, ref MyStruct[] c)
{
<処理(パラメータに対する編集を含む)>
}


このような問題で困っております。
どなたかご存知でしたら、ご教授よろしくお願い致します。
渋木宏明(ひどり)
ぬし
会議室デビュー日: 2004/01/14
投稿数: 1155
お住まい・勤務地: 東京
投稿日時: 2005-01-09 11:20
引用:

C#でref, outパラメータを指定すると、
VBAからコールし、復帰することはできないのでしょうか?



原則、out 属性の単体使用はできません。

とは言え、スカラ型の場合は動作してしまうはずなんですが、.NET の COM 連携はマーシャリングも複雑なので、駄目みたいですね。

_________________
// 渋木宏明 (Hiroaki SHIBUKI)
// http://hidori.jp/
// Microsoft MVP for Visual C#
//
// @IT会議室 RSS 配信中: http://hidori.jp/rss/atmarkIT/
1

スキルアップ/キャリアアップ(JOB@IT)