Как лучше всего запустить внешнюю программу из excel. Это может продолжаться несколько минут. Как это сделать? Идеально,
Но любые передовые практики приветствуются. Меня интересуют решения с вызовом .dll или .exe. Желательно что-то, что работает с Excel '03 или более ранней версией, но я хотел бы услышать причину, по которой также нужно перейти на более позднюю версию.





Вам следует ознакомиться с этими двумя статьями Microsoft KB
Как запустить приложение Win32 из Visual Basic и
Как использовать 32-битное приложение, чтобы определить, когда завершается закрытый процесс
Они оба быстро предоставляют вам структуру для запуска процесса, а затем проверяют его завершение. Каждая из статей базы знаний содержит дополнительные ссылки, которые могут иметь отношение к делу.
В последней статье базы знаний предполагается, что вы хотите ждать бесконечное количество времени, пока завершится процесс оболочки.
Вы можете изменить вызов функции ret & = WaitForSingleObject (proc.hProcess, INFINITE), чтобы он возвращался через некоторое конечное количество времени в миллисекундах - замените INFINITE положительным значением, представляющим миллисекунды, и оберните все это в цикл Do While. Возвращаемое значение сообщает вам, завершился ли процесс или закончился таймер. Возвращаемое значение будет равно нулю, если процесс завершится.
Если возвращаемое значение не равно нулю, то процесс все еще выполняется, но управление возвращается вашему приложению. В течение этого времени, пока вы полностью контролируете свое приложение, вы можете определить, обновлять ли какой-либо статус пользовательского интерфейса, проверять отмену и т.д.
Есть даже дополнительные параметры, если программа, которую вы обстреливаете, написана вами. Вы можете подключиться к одному из его окон и заставить программу публиковать сообщения, которые вы можете прикреплять и использовать в качестве обратной связи. Это, вероятно, лучше всего оставить для отдельного пункта, если вам нужно это рассмотреть.
Вы можете использовать структуру процесса, чтобы получить возвращаемое значение от вызываемого процесса. Ваш процесс действительно должен возвращать значение, чтобы это было полезно.
Мой общий подход к такого рода потребностям заключается в следующем:
Надеюсь это поможет, Счет.