Как исправить ошибку System.Runtime.InteropServices.COMException - PullRequest
0 голосов
/ 14 ноября 2018

Я создал проект C # WinForms, который вычисляет числовые значения и записывает их в открытую электронную таблицу Excel. Программа работает, позволяя пользователю открыть электронную таблицу в программе Excel. Запись выполняется одним методом, называемым private void updateExcel_Click(object sender, EventArgs e), который пишет примерно так:

if (*in range*)
    MySheet.Cells[activeRow, activeColumn].Value = total;

Этот подход работает как талисман, за исключением случаев, когда в. Под неподтвержденным изменением я подразумеваю, когда пользователь заходит непосредственно в электронную таблицу и меняет число в активной ячейке, не завершая изменение одним из:

  • нажатие ввода
  • нажатие на вкладку
  • нажатие клавиши со стрелкой
  • щелкнув в другом месте

Когда я снова пишу в уязвимую ячейку с помощью программы, я получаю ошибку System.Runtime.InteropServices.COMException. Полный текст:

Исключение: 'System.Runtime.InteropServices.COMException' в System.Dynamic.dll Произошло необработанное исключение типа «System.Runtime.InteropServices.COMException» в System.Dynamic.dll Вызов был отклонен вызываемым абонентом. (Исключение из HRESULT: 0x80010001 (RPC_E_CALL_REJECTED))

Как ни странно, когда прямое изменение пользователя завершается одним из маркированных методов, я не получаю ошибки при перезаписи в ячейку с программой. Как мне исправить мою программу, чтобы избежать ошибки COMException?

Я уже пытался перейти по ссылке msdn: Как исправить ошибку «Вызов был отклонен вызываемым абонентом» . Я вызвал метод C # updateCell_Click из поля с надписью «Вставьте сюда свой код автоматизации».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...