1

さまざまなマシンで長年使用されている.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を使用しています(以前のマシンと同じプロファイルで動作しました)。

助けてくれてありがとう。

4

2 に答える 2

4

IIDとのインターフェース'{A43788C1-D91B-11D3-8F39-00C04F3651B8}

これがIRTDUpdateEventインターフェイスです。実際、HKCU \ Interfacesには、標準のマーシャラーを宣言するエントリがあります。タイプライブラリが必要な場合、LIBIDは{00020813-0000-0000-C000-000000000046}です。

エラーメッセージが示しているのは、そのマシンのレジストリにレジストリキーHKCR\TypeLib\{00020813-0000-0000-C000-000000000046}またはそのサブキーの1つがないことです。古いバージョンのOfficeがインストールされている可能性がありますが、それは明らかです。単なるレジストリの損傷が、このような事故の主な原因です。マシンをチャックして、みんなの時間を無駄にしないようにするのが最善です。何らかの理由で実用的でない場合は、Officeを再インストールしてください。レジストリキーを修正することは最後の選択肢であるはずです。この種の損傷が特定されることはめったにありません。

于 2012-04-17T23:29:27.073 に答える
1

この問題は、Excelと同じスレッドでUpdateNotifyを呼び出すことで実際に解決できます。参照:https ://stackoverflow.com/a/27006281/949779

于 2014-11-18T23:42:45.530 に答える