Итак, я разработал сценарий powershell, чтобы обновить около 40 больших файлов excel и сохранить их, и в этом скрипте я запускаю макрос excel для передачи параметров соединения excel (ODBC), а затем удалите их из файла excel после обновления. Моя единственная проблема в том, что (для 5 файлов из этих 40 файлов), когда запускается команда RefreshAll, powershell не ждет, пока Excel закончит обновление, и перейдет к следующей команде, которая является макросом, который делает недействительным соединение, что вызывает ошибку «1004» в макросе (невозможно получить доступ к соединению excel, пока файл все еще обновляется.)Make PowerShell Подождите, пока Excel закончит обновлять сводную таблицу
После некоторых исследований я знаю, что в powershell v2 существует концепция фоновых заданий, но в моем случае это не в стороне процесс, он принадлежит к процессу Excel, поэтому моя сила не должна ждать выхода Excel, чтобы продолжить выполнение, напротив, мне нужно, чтобы excel оставался открытым, чтобы продолжить выполнение powershell.
Я также знаю, что команда start-sleep не подходит для моей ситуации, так как не существует фиксированного значения времени для завершения обновления, каждый файл имеет свое время, а также каждый период месяца имеет свое время (объем данных увеличивается каждый день до конца месяца)
Итак, мой вопрос: возможно ли выполнить проверку PowerShell, если файл Excel сделал обновление своих данных, если да, то он продолжается, а еще он ждет еще больше?
Любая помощь будет оценена и заблаговременно. PS: Извините мой первый класс английского языка :).
Благодарим вас за ответ. Ну, я попробовал ваше решение, но у меня все еще есть ошибка vba 1004. –
Хорошо, я обновил свой ответ, пожалуйста, посмотрите, поможет ли что-нибудь. – beatcracker
Большое спасибо за ваше решение. Я буду тестировать ODBCConnection.Ready, но я думаю, что это имеет какое-то отношение к этому сообщению http://stackoverflow.com/questions/181585/rpc-e-servercall-retrylater-during-powershell-automation, поскольку, когда я снимаю часть макроса, появляется ошибка, описанная в сообщении. –