Вопрос по ms-word, c#, com, office-2007 – Ошибка доступа к компонентам COM

28

Я создал надстройку для Microsoft Office Word. НетПроблема с использованием надстройки, когда Word запускается от имени администратора, но когдаАдминистратор не запускается, есть два распространенных исключения для доступа к элементам ленты.

Первое исключение:

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)

Эта ошибка возникает, когда элемент управления недействителен с помощью следующего кода:

ribbon.InvalidateControl("control-id");

И второе исключение:

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

Эта ошибка возникает в последней строке следующего кода:

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

Как я могу решить эту проблему?

Я неНе знаю, но у меня была такая же проблема. Запуск программ от имени администратора работал, но в большинстве случаев возникали ошибки и происходил сбой. Я'выложу ответ с тем что я сделал. Wug
Но почему, когда яработает как администратор все работает нормально? Victor
О, Боже. Ну, на какой операционной системе работает тестовая машина? Wug
Я удалил свой ответ, потому что это нене работает для вас, и мы нене нужно, чтобы люди собирались и взрывали свои реестры, пытаясь найти такие рискованные решения. Wug

Ваш Ответ

6   ответов
0

@Victor Вы направили меня на правильный путь. Моя проблема заключалась не в нескольких значениях в реестре, а в пропущенных значениях, которые Office365 никогда не добавлял. Благодаря вам я смог найти собственное решение. Тысяча тысяч спасибо.

Подробности здесь для тех, кто все еще ищет решение.

7

Я начал получать то же исключение после обновления до последней версии Office. Я попробовал несколько предложенных исправлений, включая очистку реестра способом, аналогичным описанному в @Victor.

Что в конечном итоге помогло (хотя это могло быть сочетание факторов)ремонт» установка:

Программы и особенности → самый последнийофис версия → Ремонт.

Это сработало и для меня с Office 365 и Windows 7. Спасибо! Wudge
У меня работает, у меня только VS2010 и Office 2016 Steven Yong
55

Задача решена!

Я ранее установил Office 2010, поэтому в реестре Windows есть некоторые несоответствия. Чтобы исправить их, откройтеregedit и найдите для CLSID от ошибки.

Вы найдете что-то подобное для второй ошибки:

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

С подключами:

  • ProxyStubClsid
  • ProxyStubClsid32
  • TypeLib

Посмотрите на(Default) а такжеVersion значения внутри.TypeLib

Теперь найдите узел ниже, используя(Default) значение как.

HKEY_CLASSES_ROOT\TypeLib\\

В качестве потомков этих элементов вы найдете более одного элемента, один из которых являетсяVersion первого реестра. Если вы осмотрите другие элементы, вы обнаружите, что они ни на что не указывают.Удалить остальных !!! Это'решено!

тот'Это именно то, что мне было нужно, это решило мою проблему, спасибо, мужик! animaonline
Спасибо! Потратил целый день на отладку надстройки на одном компьютере, и это решило ее cesara
Спасибо, спас меня тоже! nawfal
Возникла та же проблема при откате с Office 2013 на Office 2010. Это решение работало отлично. Armin Sadeghi
0

Сегодня у меня возникла та же проблема с VS2015 и Office 2013. Изменение цели платформы на x64 мне помогло.

0

Просто установите Office 2010 / MS Word / .NET Programmability Support.

1

Офисный ремонт у меня сработал. В моем случае я установил Project, который, как мне кажется, изменил конфигурацию и не смог вызвать процедуру для переноса данных из книги Excel в SQL

Похожие вопросы