2013-12-11 4 views
8

Я написал код C# в консольном приложении, чтобы открыть два excels и скопировать и вставить данные из одного excel в другое excel. Он работал нормально, пока видимость места назначения не была правдой. Но мне нужно скрыть превосходство во время исполнения. Поэтому я изменил видимость на false. Мол,Как решить Исключение: Звонок был отклонен вызываемым. (Исключение из HRESULT: 0x80010001 (RPC_E_CALL_REJECTED)) в C#?

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

Теперь его показ исключение как

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

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

+1

Вы попробовали: '... = новый Excel.Application();' ?? –

+1

Вы используете '.Activate' или' .Select' в любом месте? Какая строка дает вам ошибку? –

+0

Мне нужно ApplicationClass для запуска макроса в целевом excel. ApplicationClass и приложение одинаковы? –

ответ

12

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

+0

Итак, вы предполагаете, что исключение возбуждается из-за неактивированного и нелицензионного Excel, и что его активирование устранит эту проблему. Звучит странно. Добро пожаловать на [так]. –

+0

@BleedingFingers, да. Я столкнулся с ситуацией, когда это исключение было брошено, а другая функция моего приложения вызвала отдельную ошибку, связанную с «режимом ограниченной функциональности». Переустановка и активация Excel разрешили обе проблемы. – Crash5998

+2

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

0

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

+0

Этот ответ вздор. Совершенно без проблем работать с несколькими листами в автоматизации Excel. – Elmue

3

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

+0

Возможно, вы не проанализировали эту проблему полностью. OpenOffice не зависит от DLL от Microsoft Office и наоборот. Таким образом, ваше заключение с конфликтом в DLL, безусловно, неверно. Скорее всего, Excel спросил, хотите ли вы открыть файлы XLSX в Microsoft Excel, потому что ваша программа по умолчанию для файлов XLSX была OpenOffice. См. Ответ от Алисельсона Пиффера, который решил эту проблему, не удаляя OpenOffice. Всякий раз, когда Excel открывает всплывающее окно при запуске, вы можете получить сообщение об ошибке RPC_E_CALL_REJECTED или VBA_E_IGNORE или DISP_E_EXCEPTION. – Elmue

5

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

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

+2

РЕЗЮМЕ: Таким образом, в ответах здесь можно сделать вывод о том, что эта ошибка может возникнуть, когда Excel отображает любое сообщение во всплывающем окне, например, например, «Это программное обеспечение не активировано» или «Вы хотите, чтобы Excel был стандартным приложением для файлов DOCX ?». – Elmue

+0

Да! Я думаю, что это была проблема, @Elmue. Хотя для Excel должны быть файлы XLSX. :) –

+0

Вы правы. Вопрос в том, что Excel, а не Word. – Elmue

0

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

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

$word.Visible = $true 

MS Word Set default program prompt

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

0

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

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

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

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