5

Word と Excel の自動化を行う C# プログラムがあり、Office 2003 Primary Interop Assemblies を使用していました。私がそれを展開した方法は、ビンに相互運用機能を含めることであり、GAC から参照するのではなく、プログラムにそこから参照させました (あまり専門的ではありませんが、何年も機能していました)。最近、3 台のマシンに Office 2007 互換性パックがインストールされましたが、ソフトウェアが Word または Excell を起動しようとすると、次のエラーが表示されます。

タイプ Microsoft.Office.Interop.Word.ApplicationClass の COM オブジェクトをインターフェイス タイプ Microsoft.Office.Interop.Word.Application にキャストできません。IID {00020970-0000 のインターフェイスの COM コンポーネントで QueryInterface 呼び出しが行われたため、この操作は失敗しました-0000-C000-000000000046} は次のエラーにより失敗しました: ライブラリが登録されていません。(HRESULT からの例外: 0x8002801D (TYPE_E_LIBNOTREGISTERED))

いくつか検索した結果、互換パックをインストールすると、Word11 と Word12 の両方が GAC にインストールされ、Excel と同じであることがわかりました。

プログラムで GAC の Word11 相互運用機能を参照しようとしましたが、まだ助けがありません。Word12 相互運用機能をアンストールしましたが、まだ助けがありません。これをインストールすると、一部のレジストリ設定が変更されたか、ソフトウェアが混乱して正しいライブラリが見つからないように見えます。

誰かアイデアはありますか?

4

2 に答える 2

3

私も最近この問題を単語で抱えていて、このレジストリキーを原因として追跡しました

HKEY_Classes_Root\TypeLib\{00020905-0000-c000-000000000046}\8.4

どうやらこれは、Word 2003(8.3)の代わりにWord2007イントロプアセンブリを使用するようにWordに指示しているようです。少なくとも、私はオフィスのイントロプアセンブリにあまり精通していないと思います。レジストリキーを削除すると、すべてが正常に機能しました。このキーを削除したことによる悪影響はわかりませんが、確実にバックアップしてください。

于 2009-09-15T23:02:40.513 に答える
1

以前のバージョンを GAC からサード パーティ ライブラリ フォルダにコピーし、そこで参照することでこの問題を回避しました。これは、2007 のみをインストールして 2003 に対してビルドできることも意味します。(そして、はい、これが本当に汚いハックであることは知っています)

于 2009-05-21T15:58:13.793 に答える