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)
この問題を修正するにはどうすればよいですか?
問題が解決しました!
以前にOffice 2010をインストールしたため、Windowsレジストリにいくつかの矛盾があります。それらを修正するには、regedit
を開き、エラーからCLSIDを見つけます。
2番目のエラーには、そのようなものがあります。
HKEY_CLASSES_ROOT\Interface\{00020970-0000-0000-C000-000000000046}
サブキーで:
Version
内の(Default)
およびTypeLib
値を見てください。
(Default)
の値を<TypeLib ID>
として使用して、以下のノードを見つけます。
HKEY_CLASSES_ROOT\TypeLib\<TypeLib ID>\<version>
この要素の子として複数の要素があり、そのうちの1つは最初のレジストリのVersion
です。他の要素を調べると、それらは何も指し示していないことがわかります。 他のものを削除!!!それは解決しました!
最新のOfficeバージョンにアップグレードした後、同じ例外が発生し始めました。 @Victorの説明と同様の方法でレジストリをクリーンアップするなど、いくつかの修正案を試しました。
最終的に助けになったのは(要因の組み合わせであったとしても)インストールを「修復」することでした:
Programs and Features →最新 Office バージョン→ Repair。
オフィスの修理は私のために働いた。私の場合、私はプロジェクトをインストールしましたが、構成を変更し、ExcelブックからSQLにデータを移行する手順を呼び出すことができなかったと思います
@Victorあなたは私を正しい道に導いた。私の問題はレジストリ内の複数の値ではなく、Office365が決して追加しなかった欠損値でした。あなたのおかげで、私は自分の解像度を見つけることができました。千の感謝。
今日、VS2015とOffice 2013でも同じ問題が発生しました。Platformターゲットをx64に変更するとうまくいきました。
Office 2010/MS Word/.NET Programmability Supportをインストールするだけです。