wake-up-neo.com

Fehler beim Zugriff auf COM-Komponenten

Ich habe ein Add-In für Microsoft Office Word erstellt. Es gibt kein Problem mit dem Add-In, wenn Word als Administrator ausgeführt wird. Wenn es jedoch nicht als Administrator ausgeführt wird, gibt es zwei allgemeine Ausnahmen, die auf Ribbon-Elemente zugreifen.

Die erste Ausnahme:

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)

Dieser Fehler tritt auf, wenn das Steuerelement durch den folgenden Code ungültig gemacht wird:

ribbon.InvalidateControl("control-id");

Und die zweite Ausnahme:

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

Dieser Fehler tritt in der letzten Zeile des folgenden Codes auf:

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

Wie kann ich dieses Problem beheben?

28
Victor

Problem gelöst!

Ich habe Office 2010 bereits installiert, daher gibt es einige Inkonsistenzen in der Windows-Registrierung. Um diese zu beheben, öffnen Sie regedit und suchen Sie nach der CLSID aus dem Fehler.

Sie finden so etwas für den zweiten Fehler:

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

Mit den Unterschlüsseln:

  • ProxyStubClsid
  • ProxyStubClsid32
  • TypeLib

Sehen Sie sich die Werte für (Default) und Version in TypeLib an.

Suchen Sie nun den darunter liegenden Knoten mit dem (Default)-Wert als <TypeLib ID>.

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

Als untergeordnetes Element dieser Elemente finden Sie mehr als ein Element. Eines davon ist Version der ersten Registrierung. Wenn Sie die anderen Elemente prüfen, werden Sie feststellen, dass sie auf nichts zeigen. Entferne die anderen !!! Es ist gelöst!

55
Victor

Zacząłem otrzymywać ten sam wyjątek po uaktualnieniu do najnowszej wersji pakietu Office. Próbowałem wielu sugerowanych poprawek, w tym czyszczenia rejestru w sposób podobny do opisanego przez @Victor.

Co ostatecznie pomogło (chociaż mogło bis być połączenie czynników) zu „naprawa” instalacji:

Programs and Features→ najnowszeOfficewersja →Repair.

7
Nikita G.

Die Büroreparatur hat für mich funktioniert. In meinem Fall hatte ich Project installiert, von dem ich glaube, dass es die Konfiguration geändert hat, und ich konnte keine Prozedur zum Migrieren von Daten von einer Excel-Arbeitsmappe nach SQL aufrufen

1
Joseph Warero

@Victor Sie haben mich auf den richtigen Weg gebracht. Mein Problem waren nicht mehrere Werte in der Registrierung, sondern ein fehlender Wert, den Office365 nie hinzugefügt hat. Dank Ihnen konnte ich meinen eigenen Vorsatz finden. Tausendtausend Dank.

Details sind hier für alle, die noch eine Lösung suchen.

0
Andrew

Ich habe heute das gleiche Problem mit VS2015 und Office 2013 bekommen. Das Ändern des Plattformziels in x64 hat für mich funktioniert. 

0
Vaibhav Verma

Installieren Sie einfach die Office 2010/MS Word/.NET-Programmierunterstützung. 

0
Cicekfidan