Я могу вызвать макрос VBA/Excel через C#. Если пользователь (в моем случае программа C#) ввел недопустимые значения, появится окно с сообщением. Это не проблема, так как я могу провести время через C# и принять решение на основе этого (то есть определить, появляется ли окно сообщения). Проблема в том, что excel не закрывается должным образом, когда появляется окно сообщения. Я использую этот код для того чтобы закрыть excel:обнаружить/закрыть окно сообщения excel через C# после вызова макроса
excelApp.DisplayAlerts = false;
Marshal.FinalReleaseComObject(someSheet);
excelWorkbook.Close(Type.Missing, Type.Missing, Type.Missing);
Marshal.FinalReleaseComObject(excelWorkbook);
GC.Collect();
GC.WaitForPendingFinalizers();
Все закрывается, но преуспевает, и окно сообщения остается открытым. У меня есть способ закрыть окно сообщения с C#?
Насколько я знаю, нет простого или * приятного * способа сделать это. Если в окне сообщения находится фокус (нет взаимодействия между пользователем или во время работы автоматизации), вы всегда можете воспользоваться [Microsoft solution - SendKeys] (http://support.microsoft.com/kb/259971/ru -нас). – pasty
отлично - excelApp.SendKeys ("{ESC}"); на самом деле делает трюк. пожалуйста, напишите ответ. – cs0815