2012-10-18 27 views
28

Ho creato un componente aggiuntivo per Microsoft Office Word. Non esiste un problema nell'utilizzo del componente aggiuntivo quando Word viene eseguito come amministratore, ma quando non viene eseguito come amministratore, esistono due eccezioni comuni che accedono agli elementi della barra multifunzione.Errore durante l'accesso ai componenti COM

La prima eccezione:

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) 

Questo errore si verifica quando il controllo viene invalidata dal codice seguente:

ribbon.InvalidateControl("control-id"); 

E la seconda eccezione:

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

verifica questo errore sull'ultima riga del seguente codice:

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

Come posso risolvere questo problema?

+1

Funziona su altri computer? Ho rotto il registro l'altro giorno (su un computer di colleghi non meno) e stavo vivendo problemi simili a questo tutti i programmi che usavano componenti COM. Se funziona su un altro computer, spiegherò cosa ho fatto per risolverlo. – Wug

+1

Sì, funziona nel computer di sviluppo. Solo nella macchina di prova non funziona. Forse perché installo (e disinstallo) molte versioni di Office (2007, 2007-64, 2010, 2010-64) – Victor

+0

Oh caro. Bene, quale sistema operativo è in esecuzione la macchina di prova? – Wug

risposta

52

Problema risolto!

Ho installato in precedenza Office 2010, quindi ci sono alcune incongruenze nel registro di Windows. Per risolvere il problema, aprire regedit e trovare il CLSID dall'errore.

Troverete qualcosa di simile per il secondo errore:

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

Con le sottochiavi:

  • ProxyStubClsid
  • ProxyStubClsid32
  • TypeLib

Date un'occhiata al (Default) e Version valori all'interno di TypeLib.

Ora trovare il nodo sottostante, utilizzando il valore (Default) come <TypeLib ID>.

HKEY_CLASSES_ROOT \ TypeLib \ <TypeLib ID> \

Come figlio di questi elementi si trovano più di un elemento, uno dei poi è la Version del primo registro. Se ispezionerai gli altri elementi, scoprirai che non indicano nulla. Rimuovi gli altri !!! È risolto!

+0

@Wug, problema riscontrato! Grazie di aiutarmi. – Victor

+1

questo è esattamente quello di cui avevo bisogno, ha risolto il mio problema, grazie amico! – animaonline

+1

Risolto anche qui - molte grazie !! –

0

Basta installare Office 2010/MS Word/Supporto programmabilità .NET.

7

Ho iniziato a ricevere la stessa eccezione dopo l'aggiornamento all'ultima versione di Office. Ho provato una serie di correzioni suggerite tra cui la pulizia del registro in modo simile a quanto descritto da @Victor.

Che alla fine ha aiutato (anche se potrebbe essere stata una combinazione di fattori) era 'riparazione' l'installazione:

Programmi e funzionalità → ultima Ufficio versione → riparazione.

+1

Questo ha funzionato anche con Office 365 e Windows 7. Grazie! – Wudge

+0

Funziona per me, ho solo VS2010 e Office 2016 –

0

ho avuto lo stesso problema di oggi con VS2015 e Office 2013. La modifica della destinazione Platform per x64 ha funzionato per me.

1

La riparazione dell'ufficio ha funzionato per me. Nel mio caso ho installato un progetto che ritengo abbia alterato la configurazione e non sia stato in grado di richiamare una procedura per migrare i dati da una cartella di lavoro di Excel a SQL