Сбой Excel при редактировании ячейки во время работы надстройки Office - PullRequest
1 голос
/ 30 апреля 2020

У меня уже было несколько случаев сбоя Excel.

Отправной точкой является то, что надстройка Office в настоящее время занята более длительными действиями (поиск функций по всем листам с последующим извлечением данных с сервера и последующая запись этих данных в Excel). Если вы щелкнете по ячейке в течение этого времени и введете значение, вы получите «InvalidOperationInCellEditMode», если вы в настоящее время работаете в диапазоне Excel.run (asyn context ... - в надстройке. Cra sh of Excel не всегда появляется, иногда это занимает десятки раз.

Однако такой взлом sh всегда раздражает пользователя, который в настоящее время работает с надстройкой в ​​Excel. Кстати, это не так. Не поможет, если вы поймаете диапазон Excel.run, даже тогда Excel вылетает.

1 Ответ

1 голос
/ 01 мая 2020

Тот факт, что режим редактирования приводит к сбою любого вызова API, является «известной проблемой» и не может быть исправлен - даже VBA демонстрирует ту же проблему для [большинства] вызовов API. и большинство действий на ленте отключены. То же самое относится и к API-интерфейсам надстроек Office.

Поэтому при входе в режим редактирования ячейки происходит сбой вызова API и создается исключение InvalidOperationInCellEditMode.

Обходной путь не уверен, можно ли использовать в ваш сценарий:

Excel.run имеет перегрузку, которая принимает RunOptions объект. Он содержит набор свойств, которые влияют на поведение платформы при запуске функции. есть свойство: delayForCellEdit Определяет, задерживает ли Excel пакетный запрос, пока пользователь не выйдет из режима редактирования ячейки. При значении true пакетный запрос задерживается и выполняется, когда пользователь выходит из режима редактирования ячейки. При значении false пакетный запрос автоматически завершается неудачей, если пользователь находится в режиме редактирования ячейки (что приводит к ошибке, доходящей до пользователя). Поведение по умолчанию без указания свойства delayForCellEdit эквивалентно тому, когда оно ложно.

Вы можете обратиться к этой статье: https://docs.microsoft.com/en-us/javascript/api/excel/excel.runoptions?view=excel-js-preview#delayforcelledit

Для Cra sh проблема, я не могу ее воспроизвести. было бы здорово, если бы вы могли поделиться еще советами по репро информации, спасибо.

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