Я запускаю Excel из моего приложения C # WinForms, используя Process.Start(...)
(на это есть причина).Я хочу запустить его в фоновом режиме, не отвлекая пользователя, поэтому я стараюсь, чтобы он был свернут или скрыт.В обоих случаях я наблюдаю очень странное поведение:
Через несколько секунд Excel восстанавливает окно (даже делает его видимым, если оно скрыто), а затем вылетает , говоря: «Microsoft Office Excel имеетстолкнулся с проблемой и должен быть закрыт. (сообщение об ошибке Win XP.) "
То же самое происходит, если я запускаю Excel вручную, дважды щелкнув его значок ярлыка на рабочем столе, а затем просто сразу переключаюсь в другое окно приложения, например, окно Excel теряет фокус при запуске.
Проблема возникает, только если какая-либо из надстроек XLA содержит пользовательскую форму .Если я удаляю пользовательскую форму, проблема исчезает.Если я удаляю надстройку, проблема исчезает.
Любая помощь приветствуется, если она
- Объяснение, почему это происходит
- Что-то, что я могу изменить в надстройке
- Как обойти эту ошибку (без использования COM)
- Не предложение использовать COM.( Смотрите здесь, чтобы понять, почему я не .)
- Не совет по обновлению Excel (не могу)
Шаги для воспроизведения:
- Запустите Excel 2007 с пустой книгой.
- Сохранить как ...
- Тип файла: надстройка Excel 2003(* .xla)
- Расположение:% APPDATA% \ Microsoft \ Excel \ XLSTART \ foobar.xla
- Alt + F11 (открыть редактор VBA)
- Добавьте пользовательскую форму в проект.
Сохраните и выйдите из Excel
Запустите Excel и сразу же нажмите на Firefox или любую другую вкладку на панели задач, чтобыактивируйте любое окно, кроме Excel.
- Подождите и наблюдайте за запуском Excel, пока он не выйдет из строя.
После перезапуска Excel появится следующее сообщение:
В Excel возникла серьезная проблема с надстройкой «foobar».Если вы видели это сообщение несколько раз, вам следует отключить эту надстройку и проверить, доступно ли обновление.Вы хотите отключить эту надстройку?
Подробности / выводы:
- Версия Excel: 12.0.6535.5002, SP2 MSO12.0.6425.1000
- 0xA3 сообщил в своем комментарии, что он может воспроизвести его на 32-битной машине с Excel 12.0.6535.5002, SP2 MSO 12.0.6535.5002
- Я пробовал с надстройкой 2007 (XLAM).Та же проблема, за исключением того, что он даже вылетает, если не содержит никаких пользовательских форм.
- 0xA3 сообщил, что на его 64-битной машине это работает, однако Excel все равно неожиданно появляется (но не вылетает).То же самое относится и к двум машинам моих тестеров.
Это код, который я хотел использовать в C # (обратите внимание, что проблема может быть воспроизведена полностью независимо от любого приложения C #, см. Выше).
Process.Start(new ProcessStartInfo("excel.exe")
{ WindowStyle = ProcessWindowStyle.Minimized });