Надстройка вызывает сбой Excel при запуске, свернутый - PullRequest
1 голос
/ 17 сентября 2010

Я запускаю 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 });
...