Blue Prism Excel VBO Указанный ключ отсутствует в словаре - PullRequest
0 голосов
/ 26 апреля 2018

У меня есть два процесса, которые работают с одним файлом Excel.

Первый процесс создает экземпляр Excel и открывает / создает и активирует рабочую книгу и рабочий лист. Второй процесс делает записи в электронную таблицу. Первый процесс передает дескриптор Excel в качестве выходного параметра второму процессу, но когда второй процесс пытается взаимодействовать с книгой, возникает ошибка «Данный ключ отсутствует в словаре».

Я предполагаю, что дескриптор - это всего лишь средство для процесса, чтобы различать экземпляры Excel, к которым он подключен, и второму процессу необходимо подключиться к экземпляру Excel, открытому первым процессом. Excel VBO содержит страницы Attach и Attach Worksheet, которые могут предоставить эту функцию, но я не могу найти какие-либо инструкции или документацию для Excel VBO. Может быть открыто более одного экземпляра Excel, и я не уверен, как обратиться к правильному экземпляру.

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

1 Ответ

0 голосов
/ 26 апреля 2018

handle хранятся внутри памяти в конкретном экземпляре MS Excel VBO. Они не распределены между экземплярами VBO.

Учитывая вышеизложенное и предполагая, что ваш код настроен точно так, как вы описали (два разных процесса), это ожидаемое поведение: экземпляр MS Excel VBO, который содержит дескриптор для экземпляра Excel, который вы попытка взаимодействия удаляется из памяти в конце процесса.


Относительно функциональности «Присоединить» и связанной документации: большинство всех готовых VBO do имеют доступную документацию и всегда доступны при нажатии кнопки «i», как подчеркнуто на моем скриншоте ниже:

Blue Prism action configuration

При нажатии на эту кнопку появляется окно Internet Explorer с документацией для конкретного объекта, который вы задали в поле «Бизнес-объект» этого окна. В этом случае действие MS Excel VBO «Присоединить» имеет следующее описание:

1,3 Прикрепить

Обратно-совместимая ссылка на «Открытый экземпляр». Это открывает первый запуск Найден экземпляр Excel и ссылки на него в этом объекте. Возвращает:
- handle: Number: Целое число, с которым может быть открыт открытый экземпляр определены.
- Включить события: флаг: указывает, что события должны быть включено / отключено на подключенном экземпляре - по умолчанию True

В вашем конкретном случае использования это может быть жизнеспособным действием. В большинстве случаев / проектов (особенно с учетом соображений по отказоустойчивости) следует учитывать, что автоматизированное решение может непреднамеренно подключиться к другому экземпляру Excel (если он есть). Поэтому вы можете подумать о том, чтобы повторно учесть дизайн вашего процесса, чтобы создавать и взаимодействовать с экземпляром Excel в рамках одного и того же процесса Blue Prism. Если вам нужно логическое разделение кода, который запускает Excel и обрабатывает обработку, вы можете рассмотреть возможность использования отдельных страниц и ссылок на страницы, а не отдельных процессов в целом.


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

...