トップ回答者
.NETでDLL作成。COMとして運用。

質問
-
.NETでDLLを作成して、それをタイプライブラリに変換してVBAでCOMとして呼び出してFormを表示しようと思っています。
①Visual Studio 2003でDLLを作成してRegasm.exeでタイプライブラリ(.tlb)に変換。
②Excel VBAにて参照設定でタイプライブラリを参照。
Framework 1.1を入れています。上記の方法でやっているのですが、Excel2003の場合ではそれでいくのですが、
Excel2000ではオートメーションエラーとなり動きません。
どちらもWindowsXPです。
Excelのバージョンによるものだと思うのですが、
何かいい方法はありませんか?初めての投稿です。
文章が読みにくいとは思いますが、宜しくお願い致します。
回答
-
Office 2003では、.NET Framework 1.1のCLRを読み込むように固定するポリシーが設定されています。(更新プログラムにて適用される)
http://support.microsoft.com/?scid=kb%3Ben-us%3B948461&x=10&y=7
しかし、そういったポリシーの設定がないバージョンのOfficeや、その他のネイティブアプリケーションでは、既定で.NET Framework 2.0のCLRを読み込むため、.NET Framework 1.1で作られたCOMは正常に動作しない可能性があります。
1.1のCLRと2.0のCLRが同時に読み込むことができないこと、1.1と2.0の間で非互換の要素があることから、こういった問題を生んでいます。
全てのユーザの環境でうまくいくような解決策はないと思われるので、戦略の見直しも考えた方が良いかもしれません。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク sk7474 2009年3月12日 10:12
すべての返信
-
Office 2003では、.NET Framework 1.1のCLRを読み込むように固定するポリシーが設定されています。(更新プログラムにて適用される)
http://support.microsoft.com/?scid=kb%3Ben-us%3B948461&x=10&y=7
しかし、そういったポリシーの設定がないバージョンのOfficeや、その他のネイティブアプリケーションでは、既定で.NET Framework 2.0のCLRを読み込むため、.NET Framework 1.1で作られたCOMは正常に動作しない可能性があります。
1.1のCLRと2.0のCLRが同時に読み込むことができないこと、1.1と2.0の間で非互換の要素があることから、こういった問題を生んでいます。
全てのユーザの環境でうまくいくような解決策はないと思われるので、戦略の見直しも考えた方が良いかもしれません。
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。- 回答としてマーク sk7474 2009年3月12日 10:12
-
下記に続く。
http://social.msdn.microsoft.com/Forums/ja-JP/vbgeneralja/thread/01f31679-d5ab-48fe-829e-98a19d5d6400
解決した場合は、参考になった返信に「回答としてマーク」のボタンを利用して、回答に設定しましょう(複数に設定できます)。