Как решить Исключение: Звонок был отклонен вызываемым. (Исключение из HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)) в С#?

Я написал код С# в консольном приложении, чтобы открыть два excels и скопировать и вставить данные из одного excel в другое excel. Он работал нормально до тех пор, пока цель не изменилась. Но мне нужно скрыть превосходство во время исполнения. Поэтому я изменил видимость на false. Как,

  _destExcelApp = new Excel.ApplicationClass();
  _destExcelApp.Visible = false;

Теперь он показывает исключение, подобное

Звонок был отклонен вызываемым. (Исключение из HRESULT: 0x80010001 (RPC_E_CALL_REJECTED))

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

Ответ 1

Я столкнулся с этой же ошибкой, возникающей при развертывании моего приложения на машине без полностью активированной и лицензированной установки Excel. Я часами пытался диагностировать проблему. Убедитесь, что вы проверяете установки Office, чтобы убедиться, что они завершены.

Ответ 2

Я столкнулся с такой же ошибкой, и многие предлагаемые решения не работали для меня. У меня было приложение, работающее в Windows 8, и я обнаружил, что проблема заключается в том, что Excel всегда запрашивал выбор приложения по умолчанию для расширений "xlsx". При выполнении приложения не появилось диалоговое окно окна, просто была показана ошибка.

Я решил проблему с Панель управления > Программы > Программы по умолчанию и установил Microsoft Office Excel 2016 как программу по умолчанию для файлов xlsx.

Ответ 3

Я столкнулся с этой проблемой с Word, и в моем решении была удалена OpenOffice. Я не уверен, есть ли другое решение, но, скорее всего, связано с DLL и конфликтом с файловым обработчиком по умолчанию для определенных файлов, которые вы генерируете программно.

Ответ 4

Убедитесь, что MS Word/Excel не отображает диалоговое окно, требующее ответа.

Я установил точку останова на строке, которая вызвала сбой, а затем установите .Visible в true в PowerShell, чтобы найти это:

$word.Visible = $true

MS Word Установить программу по умолчанию

После того, как я нажал "Да" и обновил настройки, после того, как я перезапустил свои сценарированные взаимодействия с COM, они преуспели.

Ответ 5

Скопируете ли вы диапазон информации из одного документа в другой или собираетесь ли вы переходить между двумя документами, копируя ячейку по ячейке? Excel однопоточный, поэтому, если вы идете туда и обратно, это может вызвать эту проблему.

Ответ 6

Сегодня я столкнулся с этой ошибкой в ​​Excel 2016.

Мы обнаружили, что на компьютере с этой проблемой были активированы некоторые надстройки.

Странно, что один компьютер взял время, чтобы начать отлично. после дезактивации надстроек наша программа работала нормально.

Странно мы не могли воспроизвести это на наших dev pc's.

Ответ 7

Я решил это поведение с помощью этого вопроса:

Странное поведение "Call был отклонен вызываемым абонентом". исключение с Excel

Проблема заключалась в том, что Workbook.Open еще не закончил, когда я дал команду Worksheet.SaveAs. Так что иногда сценарий будет работать, иногда нет.

Я просто добавил паузу в сценарии после Workbook.Open и это сработало. Я продолжил, чтобы найти свойство Ready, которое позволило мне делать именно то, что я хотел:

    $excel = New-Object -ComObject "Excel.Application" -ea Stop
    $wb = $excel.Workbooks.Open($workbook)
    $sheet = $wb.Sheets("List")
    while (-not $excel.Ready) {
        sleep 1
    }
    $sheet.SaveAs($csvpath,6)

Так что в моем случае это не имело никакого отношения к неактивированным или поврежденным установкам Excel.

Ответ 8

Столкнулся с этой проблемой на моей машине. Excel полностью активирован и уже является программой по умолчанию для файлов .xlsx. Я загружал шаблон рабочей книги, созданный с помощью сводных таблиц, и с помощью сценария обновлял данные в таблицах. Оказывается, что если для сводных таблиц установлено значение "Обновить данные при открытии файла" в разделе "Параметры сводной таблицы"> "Данные", это вызывает проблемы с многопоточностью.
Отключение обновления при открытии решило проблему.

Ответ 9

В моем случае я просто перезапустил свой компьютер и обнаружил, что ожидается обновление Windows. Перезапуск машины решил мою проблему.