Существует программа для работы с Excel. Данная программа оперирует данными (считывает, записывает новые, редактирует и т.п.). Но если среди открытых файлов попадется страница с фокусом на строке формул, все зависает. Как принудительно закрыть данный файл, чтобы не мешал работе?
Попробуйте принудительное завершение работы. В том же VBA можно применить такую строку
shell "cmd.exe /c taskkill /im Excel.exe /f"
в Delphi можно применить после определения окна отправку сообщения на закрытие, например так
var
h:hwnd;
...
h:=FindWindow('EXCEL',nil);
SendMessage(h,WM_SYSCOMMAND,SC_CLOSE,0);
ну и так далее. Кстати, код Delphi писал на память, там явная ошибка, так как в Excel класс окна не совпадает с названием программы, там надо все окна проверять, искать в них дочерние окна, а уже там смотреть, какие дочерние окна содержат в классе слово Excel и уже их родительские окна принудительно завершать.
Можете попробовать сделать завершение по заголовку окна. В общем, смотрите в данном направлении, то есть в сторону завершения работы из сторонней программы.
Успеха Вам!