web-dev-qa-db-fra.com

Erreur d'accès aux composants COM

J'ai construit un complément pour Microsoft Office Word. L'utilisation du complément ne pose aucun problème lorsque Word est exécuté en tant qu'administrateur, mais lorsqu'il n'est pas exécuté en tant qu'administrateur, deux exceptions courantes accèdent aux éléments du ruban.

La première exception:

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)

Cette erreur se produit lorsque le contrôle est invalidé par le code suivant:

ribbon.InvalidateControl("control-id");

Et la deuxième exception:

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()

Cette erreur se produit sur la dernière ligne du code suivant:

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

Comment puis-je résoudre ce problème?

28
Victor

Problème résolu!

J'ai déjà installé Office 2010, il y a donc des incohérences dans le registre Windows . Pour les résoudre, ouvrez la regedit et recherchez le CLSID dans l'erreur.

Vous trouverez quelque chose comme ça pour la deuxième erreur:

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

Avec les sous-clés:

  • ProxyStubClsid
  • ProxyStubClsid32
  • TypeLib

Examinez les valeurs (Default) et Version à l'intérieur de TypeLib.

Recherchez maintenant le noeud ci-dessous, en utilisant la valeur (Default) en tant que <TypeLib ID>.

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

En tant qu'enfant de ces éléments, vous trouverez plus d'un élément, dont l'un est la Version du premier registre. Si vous inspectez les autres éléments, vous constaterez qu'ils ne pointent rien. Enlevez les autres !!! c'est résolu!

55
Victor

Zacząłem otrzymywać dix sam wyjątek po uaktualnieniu do najnowszej wersji pakietu Office. Merci de choisir votre langue, cliquez sur-le-texte pour obtenir plus de détails sur l'opération @Victor.

Co ostatecznie pomogło (chocoż mogło à być połączenie czynników) à naprawa "instalacji:

Programs and Features→ najnowszeOfficewersja →Repair.

7
Nikita G.

La réparation du bureau a fonctionné pour moi. Dans mon cas, j'avais installé Project qui, je crois, avait modifié la configuration et ne pouvait pas appeler de procédure pour migrer les données d'un classeur Excel vers SQL.

1
Joseph Warero

@Victor Vous m'avez dirigé sur le bon chemin. Mon problème n'était pas plusieurs valeurs dans le registre mais plutôt une valeur manquante qu'Office365 n'a jamais ajoutée. Grâce à vous, j'ai pu trouver ma propre résolution. Mille mille mercis.

Les détails sont ici pour ceux qui cherchent encore une résolution.

0
Andrew

J'ai le même problème aujourd'hui avec VS2015 et Office 2013. Le changement de la cible de la plateforme en x64 a fonctionné pour moi. 

0
Vaibhav Verma

Il suffit d'installer le support de programmabilité Office 2010/MS Word/.NET. 

0
Cicekfidan