2012-10-18 22 views
28

Zbudowałem dodatek do programu Microsoft Office Word. Nie ma problemu z używaniem dodatku, gdy program Word jest uruchamiany jako administrator, ale gdy nie jest uruchamiany jako administrator, istnieją dwa typowe wyjątki, które umożliwiają dostęp do elementów wstążki.Błąd dostępu do składników COM

Pierwszy wyjątek:

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) 

Ten błąd występuje, gdy kontrola jest unieważniane przez następujący kod:

ribbon.InvalidateControl("control-id"); 

a drugi wyjątek:

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

Ten błąd występuje, w ostatnim wierszu następującego kodu:

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

Jak mogę rozwiązać ten problem?

+1

Czy działa na innych komputerach? Zerwałem rejestr na drugi dzień (na komputerze współpracowników nie mniej) i miałem problemy podobne do tych wszystkich programów, które używały komponentów COM. Jeśli działa na innym komputerze, wyjaśnię, co zrobiłem, aby to naprawić. – Wug

+1

Tak, działa w komputerze programistycznym. Tylko w maszynie testowej nie działa. Może dlatego, że instaluję (i jednoczęściowo) wiele wersji Office (2007, 2007-64, 2010, 2010-64) – Victor

+0

Och kochanie. Jakim systemem operacyjnym jest uruchomiona maszyna testowa? – Wug

Odpowiedz

52

Problem rozwiązany!

Mam wcześniej zainstalowany pakiet Office 2010, więc w rejestrze systemu Windows występują pewne niespójności. Aby je naprawić, otwórz regedit i znajdź identyfikator CLSID z powodu błędu.

Znajdziesz coś takiego dla drugiego błędu:

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

Z podklucze:

  • ProxyStubClsid
  • ProxyStubClsid32
  • TypeLib

Spójrz na (Default) i Version wartości wewnątrz TypeLib.

Teraz znajdź węzeł poniżej, używając wartości (Default) jako <TypeLib ID>.

HKEY_CLASSES_ROOT \ TypeLib \ <TypeLib ID> \

Jako dziecko tych elementów można znaleźć więcej niż jeden element, jeden z czym jest Version pierwszego rejestru. Jeśli przejrzysz pozostałe elementy, przekonasz się, że nic nie wskazują. Usuń pozostałe !!! Rozwiązany!

+0

@Wug, problem został znaleziony! Dzięki za pomoc. – Victor

+1

to dokładnie to, czego potrzebowałem, to rozwiązało mój problem, dzięki człowieku! – animaonline

+1

Naprawiono tu również - wielkie dzięki! –

0

Wystarczy zainstalować słowo Office 2010/MS Word/.NET Programmability Support.

7

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 (choć może to być kombinacja czynników) była „naprawa” instalacja:

Programy i funkcje → najnowszy Biuro wersja → Repair.

+1

To działało dla mnie również z Office 365 i Windows 7. Dziękuję! – Wudge

+0

Działa dla mnie, mam tylko VS2010 i Office 2016 –

0

@Victor Wprowadziłeś mnie na właściwą drogę. Mój problem nie zawierał wielu wartości w rejestrze, ale raczej brakującą wartość, której Office 365 nigdy nie dodał. Dzięki tobie udało mi się znaleźć własną rozdzielczość. Tys tysięcy tysięcy dzięki.

Details are here for anyone still looking for a resolution.

0

mam ten sam problem dzisiaj z VS2015 i Office 2013. Zmiana Platforma docelowa do 64 pracował dla mnie.

1

Naprawiono u mnie naprawę biurową. W moim przypadku zainstalowałem projekt, który, jak sądzę, zmienił konfigurację i nie był w stanie wywołać procedury migracji danych ze skoroszytu programu Excel do SQL

Powiązane problemy