Запуск нового экземпляра Excel


Краткое описание

В статье описывается пример команды и скрипта для запуска нового (параллельного) приложения Excel, позволяющего работать независимо от состояния исходного файла.


Подробное описание

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

Кто сталкивался, знает - ситуация досадная, т.к. работа может простаивать из-за того, что приходится ждать окончания запущенного процесса excel прежде чем появится возможность работать с другими excel файлами.

В справке Microsoft на эту тему есть вполне рабочее решение - запуск нового экземпляра (отдельного процесса) Excel из командной строки. Например так: excel.exe /x "C:\Users\Admin\Desktop\МойФайл.xlsx" или для открытия пустого файла: excel.exe /x

Указанное выше решение очень даже рабочее. С одной лишь оговоркой. Новое приложение (новый процесс) станет доступно для работы только, когда "отвиснет" старое. Либо вам нужно сперва запустить новый экземпляр Excel одной из указанных выше команд и только потом запускать ваш "тяжелый" пересчет в исходном файле.

Если же так произошло, что важный пересчет уже запущен, а Excel нужен срочно, предлагаю небольшой vbs скрипт (см. файл выше). Просто распакуйте файл "new_excel.vbs" из архива и запустите его двойным кликом или через Enter. Запускать скрипт можно в любое время, не дожидаясь окончания работы (доступности) исходного файла.


Указанный выше синтаксис командной строки или код скрипта можно очень легко применять в макросах VBA. Тем самым, делая интересные в плане реализации вещи независимо от занятости/загруженности исходного файла (потока данных).

Также важно не забывать, что отдельный процесс предполагает и иные правила работы с файлами. Так например, простой копипаст формул между файлами уже работать не будет (формула скопируется как значение). Копирование листа в другую книгу также не сработает (в мастере копирования вы просто не увидите другие открытые книги). Если на уровне VBA эти тонкие моменты можно учесть и обойти, то в обычной работе с Excel этого не избежать.

Как один из плюсов работы в отдельном процессе - через диспетчер задач можно смело закрывать зависший процесс excel, другие файлы (запущенные в отдельных процессах) при этом не пострадают.

Вернуться к списку примеров

Комментарии ()

  1. ssd 21 июля 2017, 17:00 # 0
    То что надо было, Спасибо!
    1. Maxim 27 декабря 2017, 13:42 # 0
      Сам пользуюсь довольно-таки часто данной возможностью. Просто и удобно.
      Единственное, если компьютер не очень мощный, то много файлов не стоит так открывать, т.к. эксель будет притормаживать.
    2. Лев 05 декабря 2018, 18:29 # 0
      А еще при запуске нового экземпляра списки истории исправлений будут наконец-то вестись отдельно для каждого экземпляра
      1. Maxim 23 апреля 2019, 23:26 # 0
        Никогда с подобным не сталкивался, т.к. обычно работал с одной общей книгой за раз. Но если разведение на разные экземпляры помогает, — здорово! Буду тоже знать. Спасибо, что упомянули об этом.