Спрятать Excel от пользователя


При работе с Excel как с automation приложением полезно перевести это приложение в "абсолютно неинтерактивный режим". Сделать это можно создавая новый экземпляр приложения (new instance), а не подключаясь к уже запущенному, и установив следующие свойства:

  • Visible (ложь) - отображение окна приложения на экране
  • UserControl (ложь) - приложение запущено пользователем (или системой)
  • Interactive (ложь) - реагирование окна приложения на ввод от пользователя
  • DisplayAlerts (ложь) - отображение всяких предупреждающих сообщений (например, что данные будут утеряны)
  • ScreenUpdating (ложь) - перерисовывание окна приложения при изменении в нем информации
  • IgnoreRemoteRequests (истина) - игнорирование всех запросов от системы (в том числе на новые подключение как к automation server) - с этим нужно работать аккуратно, т.к. это параметр самого Excel (в Excel 2013 - Параметры Excel / Дополнительно / Игнорировать DDE-запросы от других приложений), и при аварийном завершении он останется установленным

По завершении формирования информации в Excel, если нужно приложение отобразить пользователю, то надо все эти свойства перевести в противоположное значение.

Пример:

Application.Visible = False
Application.UserControl = False
Application.Interactive = False
Application.DisplayAlerts = False
Application.ScreenUpdating = False
Application.IgnoreRemoteRequests = True
      ................................
      ................................
      ................................
Application.IgnoreRemoteRequests = False
Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Interactive = True
Application.UserControl = True
Application.Visible = True


Нравится