Запуск нового экземпляра 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, другие файлы (запущенные в отдельных процессах) при этом не пострадают.
Единственное, если компьютер не очень мощный, то много файлов не стоит так открывать, т.к. эксель будет притормаживать.