У меня есть код VBA, который обрабатывает много слайдов в файле PowerPoint. Часть кода временно изменяет размеры слайдов, поэтому я могу экспортировать изображения с другим соотношением сторон.
Я не могу изменить их размер снова, потому что PowerPoint никогда не возвращает их содержимое точно так, как это было до изменения размера, и поэтому я выполните
Application.StartNewUndoEntry
до того, как я выполню изменение размера, а затем
Application.CommandBars.ExecuteMso "Undo"
после экспорта, чтобы отменить изменение размера и убедиться, что все go вернулось в точности так, как они были до изменения размера .
Затем я записываю некоторые метаданные на страницу примечаний к слайдам и повторяю для следующего слайда.
Проблема в том, что
Application.CommandBars.ExecuteMso "Undo"
не блокируется до завершения отмены , Это означает, что запись на страницу заметок (после которой Application.CommandBars.ExecuteMso "Undo"
) также отменяется!
Как заставить PowerPoint ждать, пока она не завершится Application.CommandBars.ExecuteMso "Undo"
, прежде чем выполнять код, который записывает в заметки page?
Я пытался перевести паузу в ожидании и даже на пару секунд между отменой и другим моим кодом, но, похоже, это совсем не помогает. Он все еще отменяет код, который я выполняю ПОСЛЕ вызова executeMso "Undo"
(я также думал о сохранении идентификаторов слайдов, которые мне нужны, чтобы обновить страницы заметок, пока все изменения размера и экспорта не будут завершены и затем обновление всех страниц заметок, но я подозреваю, что это будет пустой тратой времени, потому что первая (или более) все равно будет потеряна из-за того, что последняя отмена не завершила свою работу.)
(Я также попытался переместить код обновления заметок до изменения размера (и затем отменить) слайда - но это не работает, потому что он просто перемещает проблему на предыдущий слайд, который не завершен, а не на текущий.)