2012-10-18 22 views
28

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, aber wenn es nicht als Administrator ausgeführt wird, gibt es zwei häufige Ausnahmen beim Zugriff auf Ribbon-Elemente.Fehler beim Zugriff auf COM-Komponenten

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 die Steuerung durch den folgenden Code für ungültig erklärt 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 auf in der letzten Zeile des folgenden Codes:

Wie kann ich dieses Problem beheben?

+1

Funktioniert es auf anderen Computern? Ich brach die Registrierung neulich (auf einem Computer des Mitarbeiters nicht weniger) und hatte Probleme, die ähnlich zu diesem alle Programme sind, die COM-Bestandteile benutzten. Wenn es auf einem anderen Computer funktioniert, erkläre ich, was ich getan habe, um es zu beheben. – Wug

+1

Ja, funktioniert im Entwicklungscomputer. Nur in der Testmaschine funktioniert nicht. Vielleicht, weil ich viele Versionen von Office (2007, 2007-64, 2010, 2010-64) – Victor

+0

Oh liebe installiere (und unistalliere). Nun, mit welchem ​​Betriebssystem läuft die Testmaschine? – Wug

Antwort

52

Problem gelöst!

Ich habe Office 2010 bereits installiert, daher gibt es einige Inkonsistenzen in der Windows-Registrierung. Um sie zu beheben, öffnen Sie die regedit und finden Sie für die CLSID von dem Fehler.

Sie werden so etwas wie die für den zweiten Fehler finden:

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

Mit dem Unterschlüssel:

  • ProxyStubClsid
  • ProxyStubClsid32
  • TypeLib

Werfen Sie einen Blick Bei der (Default) und Version Werte innerhalb von TypeLib.

Jetzt finden Sie den Knoten unter Verwendung der (Default) Wert als <TypeLib ID>.

HKEY_CLASSES_ROOT \ TypeLib \ <TypeLib ID> \

Als Kind dieser Elemente, die Sie mehr als ein Element finden, von dann ist die Version der ersten Registrierung. Wenn Sie die anderen Elemente überprüfen, werden Sie feststellen, dass sie auf nichts zeigen. Entfernen Sie die anderen !!! Es ist gelöst!

+0

@Wug, Problem gefunden! Danke für deine Hilfe. – Victor

+1

das ist genau das, was ich brauchte, löste mein Problem, danke Mann! – animaonline

+1

Auch hier behoben - vielen Dank !! –

0

Installieren Sie einfach Office 2010/MS Word/.NET Programmability Support.

7

Ich habe die gleiche Ausnahme nach dem Upgrade auf die neueste Office-Version erhalten. Ich habe eine Reihe von vorgeschlagenen Fixes ausprobiert, einschließlich der Bereinigung der Registry, ähnlich wie bei @Victor beschrieben.

Was schließlich geholfen (auch wenn es sich um eine Kombination von Faktoren gewesen sein konnte) war 'Reparatur' der Installation:

Programme und Funktionen → neueste Büro Version → Reparatur.

+1

Das hat bei mir auch mit Office 365 und Windows 7 funktioniert. Danke! – Wudge

+0

Funktioniert für mich, ich habe nur VS2010 und Office 2016 –

0

bekam ich das gleiche Problem heute mit VS2015 und Office 2013, die Plattform Ziel Umstellung auf x64 für mich gearbeitet.

1

Die Büroreparatur funktionierte für mich. In meinem Fall hatte ich Project installiert, von dem ich glaube, dass es die Konfiguration geändert hat und nicht in der Lage war, eine Prozedur zum Migrieren von Daten von einer Excel-Arbeitsmappe zu SQL aufzurufen