Запуск нового экземпляра 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)

  1. ssd 21 июля 2017, 17:00 # 0
    То что надо было, Спасибо!