Powerpoint内のVBAから呼び出されたDLLを更新しました。すべての開発はうまくいったが、別のユーザーのマシンにデプロイしようとしたときに、デバッグ方法がわからないという問題が発生する。COM呼び出し可能ラッパーから返されたオブジェクトが正しくありません
VBAで.Netオブジェクトが作成されると、返される参照は間違ったオブジェクトになり、次の行はメソッドが見つからないため失敗します。
Dim myObj As Foo.Bar
Public Sub RefreshData()
//'instantiate object
Set myObj = New Foo.Bar
//'call a method
myObj.HelloWorld
最後の行は、実行時エラーで失敗「438」オブジェクトは、このmyobjのタイプが何らかの形であるという事実によって引き起こされるこのプロパティまたはメソッドをサポートしていませんが、「Wrong.Type」の代わりに " Foo.Bar "
"Wrong.Type"もアセンブリ内にあるので、型ライブラリに問題があると思われますが、regasm/codebase/tlb MyLib.dllを使用して再生成を試みましたが、これは役に立ちませんでした。
これ以上診断する方法はわかりません。うまくいけば、そこに誰かがこの種の問題を診断する方法のいくつかのステップを記載することができますか?この場合
この場合、tlbファイルへの参照を削除し、再度追加して問題を解決しました。私はまだ盲目的に刺しても結局解決策を見つけたにもかかわらず、問題を診断するのに役立つことを知りたいと思っています。 – Modan
私は同様の問題を抱えていますが、ネイティブVBAクラスのインスタンスを作成すると、追加/削除の参照(http://stackoverflow.com/questions/2677091/automating-excelthrough-the-pia-makes-vba-go-squiffyを参照) - これを診断するためにさらに進歩しましたか?もしあれば、どんな提案?ありがとう! –
@Modan:あなた自身の質問に答えて、あなたが探しているものを見つけたことを知らせる自分の答えを受け入れることができます。 – adamleerich