Я надеюсь, что вы можете следовать этому.Вопрос в конце.
У меня есть книга Excel 2003, которая содержит таблицу значений, которые будут использоваться в DOE (Дизайн экспериментов).Этот лист загружает (через Workbook.Open
) другую рабочую книгу, заполняет правильные поля и затем выполняет вычисления во второй рабочей книге (через Application.Run("backend.xla!calc")
).
В свою очередь, вычисление вызывает внешний .dll
(скомпилированный Fortan ) и ожидает его завершения (через Declare Sub Calculate Lib "fortran.dll" (args)
).Каждый прогон занимает 4 минуты.Может быть от 7 до 21 пробега на DOE.В конце ключевые значения возвращаются в первую рабочую книгу для отображения результатов.
Пожалуйста, помогите мне придумать, как создать несколько копий второй рабочей книги и рассчитать каждую из них (вызывая одну и ту же DLL,различные параметры) в одно и то же время (другой процесс Excel) для лучшего выделения 4-ядерных процессоров.
Или, может быть, какой-либо способ прямого вызова внешней функции асинхронно.Я понимаю, что Excel 2003 VBA является однопоточным, и внешняя DLL может использоваться только как синглтон (я не уверен).
PS.Не стесняйтесь говорить, что я в значительной степени привязан к последовательным вычислениям стиля.Хорошо, я могу взять это.