私のExcel
アドイン(XLL AddIn、それを呼び出しますMyAddIn
)は、C#、ExcelDNA、NetOffice、VS2010で構築されています。クライアントには別のアドインがあります(これを呼びましょうB
)。VBAで記述されていると思います。クライアントはB
、がなくても正常に動作すると言いMyAddIn
ます。インストールすると、次のエラーMyAddIn
でB
失敗します。
エラーコード:406エラーメッセージ:このホストアプリケーションでは、ActiveX DLL、ActiveXコントロール、またはプロパティページから非モーダルフォームを表示できません。
私はこのMicrosoftリソースB
を見ましたが、アドインを変更する必要があることをクライアントに伝えたくありません。私の側からこれを避けるために何かをしたいです。
問題を確認するために報告された手順は次のとおりです。
- Bアドインをインストールすると、Microsoftのレジストリエントリは作成されません
Excel
。 MyAddin
をインストールすると、Microsoftのレジストリエントリが作成されますExcel
。Excel
ここのレジストリエントリは、基本的に、起動時にアドインを開く必要があることを示しているため、B
アドインは起動されず、正常に動作し、Excel
正常にMyAddIn
動作します。- これで、
B
アドインを起動すると、上記の406エラーが発生します。 - エラーを無視して、
B
アドインで作業を続けることができます。無効にすることMyAddIn
は回避策です。 B
アドインを起動すると、アドインの前に最初にロードされ、次に406エラーが発生することがMyAddIn
わかりB
ます。- アンインストールする
MyAddIn
と、このエラーは発生しなくなり、すべてが正常に機能します。 - このエラーを取り除くために、レジストリの順序を変更して、
B
アドインが常に開くようにしMyAddin
ました。- これは機能しますが
Excel
、これはMicrosoftのグローバルな変更です。つまりB
、を起動した場合でも、アドインは常に開きExcel
ます。アドインはリアルタイムで更新を続けるB
ため、アドインは静的データを操作できないため、これは望ましくありません。これが、アドインがレジストリ設定にエントリを作成しないB
理由です。B
したがって、レジストリの変更はオプションではありません。B
開いているときはいつでもアドインを開くことができるとは限りませんExcel
。
- これは機能しますが