jinesh sam Ответов: 1

Как вызвать параллельные макросы excel


Привет Друзья,
Мне нужно запустить макрос excel несколько раз с некоторыми изменениями во входных данных. поскольку выполнение макроса занимает больше времени, мне нужно открыть несколько экземпляров excel и запустить макросы параллельно. Как я могу этого достичь? пожалуйста, помогите мне с некоторыми идеями.

Текущее время
один запуск макроса займет ~10 минут. мне нужно вызвать этот макрос в цикле с count 25.so приблизительно это занимает 2 часа. моя цель-сократить количество мяты до 30

 public static Excel.Application oExcel;
 oExcel = new Excel.Application();
            object oMissing = System.Reflection.Missing.Value;
            oExcel.Visible = false;
            Excel.Workbooks oBooks = oExcel.Workbooks;
            Excel.Workbook oBook = null;
            oBook = oBooks.Open(filepath, oMissing, oMissing,
                oMissing, oMissing, oMissing, oMissing, oMissing, oMissing,
                oMissing, oMissing, oMissing, oMissing, oMissing, oMissing);

 for (int i = 0; i < 25; i++)
{
Excel.Worksheet sheet = (Excel.Worksheet)oExcel.Sheets[1];
 sheet.Cells[8, 3] = i; 
 MacroRun.RunExcelMacro(oExcel, "runTestCases");
}


Что я уже пробовал:

private static void RunMacro(object oApp, object[] oRunArgs)
       {
           oApp.GetType().InvokeMember(Constants.RUN,
               System.Reflection.BindingFlags.Default |
               System.Reflection.BindingFlags.InvokeMethod,
               null, oApp, oRunArgs);
       }
       public static void RunExcelMacro(Excel.Application oExcel, string macroname, string paramaters = "")
       {
           // Run the macros.
           if (paramaters == "")
               RunMacro(oExcel, new Object[] { macroname });
           else
               RunMacro(oExcel, new Object[] { macroname, paramaters });
       }

Patrice T

Что делает макрос ?

jinesh sam

какая-то бизнес-логика... мне нужно проверить вывод из excel и API

Karthik_Mahalingam

Всегда использовать  Ответить  кнопка, чтобы отправить комментарии / запрос пользователю, чтобы пользователь получил уведомление и ответил на ваш текст.

1 Ответов

Рейтинг:
2

Dave Kreskowiak

Единственный вариант-создать отдельный экземпляр Excel.Приложение. Каждый из них должен будет открыть рабочую книгу, с которой вы работаете, каждый-свою собственную копию файла, взять ваши различные входные данные и запустить свою копию макросов.

Вы не можете выполнять макросы "параллельно" в одном экземпляре Excel.

Имейте в виду, что это может не дать вам той производительности, которую вы ищете. Мы понятия не имеем, в какой области(областях) находится узкое место производительности, поэтому никто не может дать вам никаких советов по каким-либо дополнительным изменениям.