web-dev-qa-db-ja.com

COMコンポーネントへのアクセスエラー

Microsoft Office Word用のアドインを作成しました。 Wordが管理者として実行されている場合、アドインを使用しても問題はありませんが、管理者として実行されていない場合、リボン要素にアクセスする2つの一般的な例外があります。

最初の例外:

Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Office.Core.IRibbonUI'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{000C03A7-0000-0000-C000-000000000046}' failed due to the following error:  could not be found. (Exception from HRESULT: 0x80030002 (STG_E_FILENOTFOUND)).
   at Microsoft.Office.Core.IRibbonUI.InvalidateControl(String ControlID)

このエラーは、次のコードによってコントロールが無効化されたときに発生します。

ribbon.InvalidateControl("control-id");

2番目の例外:

Unable to cast COM object of type 'Microsoft.Office.Interop.Word.ApplicationClass' to interface type 'Microsoft.Office.Interop.Word._Application'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{00020970-0000-0000-C000-000000000046}' failed due to the following error:  could not be found. (Exception from HRESULT: 0x80030002 (STG_E_FILENOTFOUND)).
   at Microsoft.Office.Interop.Word.ApplicationClass.get_Selection()

このエラーは、次のコードの最終行で発生します。

object wdStory = Word.WdUnits.wdStory;
object wdMove = Word.WdMovementType.wdMove;
WrdApp.Selection.EndKey(ref wdStory, ref wdMove)

この問題を修正するにはどうすればよいですか?

29
Victor

問題が解決しました!

以前にOffice 2010をインストールしたため、Windowsレジストリにいくつかの矛盾があります。それらを修正するには、regeditを開き、エラーからCLSIDを見つけます。

2番目のエラーには、そのようなものがあります。

HKEY_CLASSES_ROOT\Interface\{00020970-0000-0000-C000-000000000046}

サブキーで:

  • ProxyStubClsid
  • ProxyStubClsid32
  • TypeLib

Version内の(Default)およびTypeLib値を見てください。

(Default)の値を<TypeLib ID>として使用して、以下のノードを見つけます。

HKEY_CLASSES_ROOT\TypeLib\<TypeLib ID>\<version>

この要素の子として複数の要素があり、そのうちの1つは最初のレジストリのVersionです。他の要素を調べると、それらは何も指し示していないことがわかります。 他のものを削除!!!それは解決しました!

57
Victor

最新のOfficeバージョンにアップグレードした後、同じ例外が発生し始めました。 @Victorの説明と同様の方法でレジストリをクリーンアップするなど、いくつかの修正案を試しました。

最終的に助けになったのは(要因の組み合わせであったとしても)インストールを「修復」することでした:

Programs and Features →最新 Office バージョン→ Repair

7
Nikita G.

オフィスの修理は私のために働いた。私の場合、私はプロジェクトをインストールしましたが、構成を変更し、ExcelブックからSQLにデータを移行する手順を呼び出すことができなかったと思います

1
Joseph Warero

@Victorあなたは私を正しい道に導いた。私の問題はレジストリ内の複数の値ではなく、Office365が決して追加しなかった欠損値でした。あなたのおかげで、私は自分の解像度を見つけることができました。千の感謝。

まだ解決策を探している人のために詳細がここにあります。

0
Andrew

今日、VS2015とOffice 2013でも同じ問題が発生しました。Platformターゲットをx64に変更するとうまくいきました。

0
Vaibhav Verma

Office 2010/MS Word/.NET Programmability Supportをインストールするだけです。

0
Cicekfidan