none
Excel2013 64ビット VBA から VisualC++2013 で作成した64ビットDLLをコールする際の問題 RRS feed

  • 質問

  • Excel2013 64ビット VBA から VisualC++2013で作成した 64ビットDLLをコールしていますが、正常に動作していた関数の引数を
    1個増やしてDLLをリコンパイルし、VBA側もこれに合わせて修正して実行すると異常終了します。

    引数を増やした関数名を「新しいものに変更」すると正常に動作します。つまり、一度動作した関数は、同じ名前ではインタフェースを変更
    できないかのような動きとなります。C++で作成したアプリからコールする場合は、リコンパイルすれば、同じ名前でも当然正常になります。

    VBAが記述されている.xlsmファイルからモジュールを一旦解放エクスポートし、モジュールなしの状態で更新後、再度、モジュールをインポートすることによって、正常に戻ります。ということで、最初のインタフェース情報が、何らかの形で.xlsmファイルに残ってしまうようです。やはり、Excel2013 64ビットのソフトウェア不良ではないでしょうか? 32ビットではこのような問題は発生しません。

    開発中は、変更することは頻繁にありますので、根本的な対策をお願い致します。

    以上

    2014年11月14日 9:02

すべての返信

  • モジュールを解放して取り込み直せば回復すると考えればキャッシュしているという話は当たっていそうですね。
    また、32bit で起きず、64bit で起きるというように、ここまで切り分けできているのであれば、Microsoft の有償サポートに突きつけみてはいかがでしょうか。
    解決策の提案をもらえるかもしれません。
    2014年11月14日 14:20