さまざまなマシンで長年使用されている.NETCOM/ Excel RTDサーバー(.NETアセンブリ)を構築しました(つまり、動作することがわかっており、標準のインストール方法でも動作します)。このRTDコンポーネントを別のマシンにインストールしたユーザーがいて、スムーズに機能させるのに問題があります。この問題は、Interop.Microsoft.Office.Interop.Excel.dllがこのマシンと互換性がないか、正しく登録されていないことに関連していると思います。具体的な詳細は次のとおりです。
RTDリンクはある程度機能していますが、アプリケーションによって頻繁にログに記録されるこのエラーが表示されます。
RTDServer.NotifyExcel(): Error notifying Excel, ex=System.InvalidCastException:
Unable to cast COM object of type 'System.__ComObject' to interface type
'Microsoft.Office.Interop.Excel.IRTDUpdateEvent'. This operation failed because
the QueryInterface call on the COM component for the interface with
IID '{A43788C1-D91B-11D3-8F39-00C04F3651B8}' failed due to the following error:
Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)).
at Microsoft.Office.Interop.Excel.IRTDUpdateEvent.UpdateNotify()
at EZomsRTDServer.RTDServer.NotifyExcel()
ユーザーのマシンでトラブルシューティングを行っているときに、コンポーネントがCOMに正しく登録されているかどうかを確認しました。次のコマンドを実行して、コンポーネントをCOMに登録します。
C:\EZomsRTD\regasm EZomsRTDServer.dll /codebase "c:\EZomsRTD\EZomsRTDServer.dll"
C:\EZomsRTD\regasm EZomsRTDServer.dll /tlb
ユーザーのマシンでこれらのコマンドを実行すると、次のregasmエラーが発生します。
Type library exporter warning: Referenced type is defined
in managed component, which is imported from a type library
that could not be loaded because it was not registered
(type: 'Microsoft.Office.Interop.Excel.IRtdServer'; component:
'C:\EZomsRTD\Interop.Microsoft.Office.Interop.Excel.dll').
Assembly exported to 'C:\EZomsRTD\EZomsRTDServer.tlb', and the type
library was registered successfully
(ファイル:Interop.Microsoft.Office.Interop.Excel.dllは、コンポーネントと同じフォルダーにあります。)
これは、このマシンのGACに登録されているInterop.Excelアセンブリの別のバージョンが原因である可能性がありますか?調査する他の可能な領域はありますか?
注:ユーザーはWindowsXPとExcel2003を使用しています(以前のマシンと同じプロファイルで動作しました)。
助けてくれてありがとう。